我有一个非常愚蠢的问题,我无法回答。 有人可以告诉我为什么以下代码有效吗?
char hello[]="Hello World\n";
char *hptr = hello;
while(*hptr)
{
printf("%c", *hptr++);//here the output must be "ello World", but C thinks otherwise!!!
}
答案 0 :(得分:2)
您正在使用后增量:
*hptr++
首先使用hptr
的值,然后递增它。如果你想跳过第一个字母,你会使用预增量:
*++hptr
这会增加指针值,然后将其用作函数参数。
答案 1 :(得分:0)
char hello[]="Hello World\n";
在此hello中保存字符数组的第一个索引的地址 char * hptr =你好; 这里的字符指针hptr =字符数组的第一个索引的地址 而(* HPTR) { printf(“%c”,* hptr ++); }
并在此循环中首先在字符数组的第一个索引处打印字符,然后递增它,然后递增hptr的地址,然后打印第二个字符,直到你到达空字符。