【发布时间】:2015-03-01 15:48:14
【问题描述】:
在http://www.cplusplus.com/reference/cstring/strchr/ 的strchr 引用中提供了此示例。
/* strchr example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "This is a sample string";
char * pch;
printf ("Looking for the 's' character in \"%s\"...\n",str);
pch=strchr(str,'s');
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,'s');
}
return 0;
}
为什么从char 指针pch 中减去char 数组str 加上一个会得到int? (由%d 格式类型表示)如果我删除“-str”,程序将不会执行,直到我将%d 更改为%s。
【问题讨论】:
-
数组在表达式中使用时会衰减为指针,指针的差异是它们之间的距离(元素数)。
-
@zch:幸好你消除了 OP 对数组语义的困惑。不过,他的问题呢?
标签: c++ c arrays pointers strchr