C 中 p++ 和 p+1 有什么区别?

问题描述 投票:0回答:1

我正在学习 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输出指针?
c
1个回答
0
投票

*p+1 可以读作 (*p)+1,所以它先找到 *p,即 H,然后加 1,即 I。您可以将 *++p 读作 *(++p) ,所以它首先向指针加 1,然后取消引用它以获得 e。

© www.soinside.com 2019 - 2024. All rights reserved.