我正在学习 C,遇到了两个看似相似但行为不同的表达式:++p 和 p+1。
这是一个我看到一些意想不到的结果的例子:
int i=0;
printf("%d \n", i); //0
printf("%d \n", i+1); //1
printf("%d \n", ++i); //1
但是
char str[] = "Hello";
char *p = str;
printf("%c \n", *p); //'H'
printf("%c \n", *p+1); //'I'
printf("%c \n", *++p); //'e'
有人可以解释一下吗:
*p+1 可以读作 (*p)+1,所以它先找到 *p,即 H,然后加 1,即 I。您可以将 *++p 读作 *(++p) ,所以它首先向指针加 1,然后取消引用它以获得 e。