C奇怪的指针算术

时间:2015-07-09 13:13:12

标签: c pointers

我有一个非常愚蠢的问题,我无法回答。 有人可以告诉我为什么以下代码有效吗?

char hello[]="Hello World\n";
char *hptr = hello;
while(*hptr)
{
 printf("%c", *hptr++);//here the output must be "ello World", but C thinks otherwise!!!
}

2 个答案:

答案 0 :(得分:2)

您正在使用后增量:

*hptr++

首先使用hptr的值,然后递增它。如果你想跳过第一个字母,你会使用预增量:

*++hptr

这会增加指针值,然后将其用作函数参数。

答案 1 :(得分:0)

char hello[]="Hello World\n";

在此hello中保存字符数组的第一个索引的地址     char * hptr =你好; 这里的字符指针hptr =字符数组的第一个索引的地址     而(* HPTR)     {     printf(“%c”,* hptr ++);     }

并在此循环中首先在字符数组的第一个索引处打印字符,然后递增它,然后递增hptr的地址,然后打印第二个字符,直到你到达空字符。