#include <stdio.h>
int main()
{
char a[] = "hello";
char *ptr = a;
printf ("%c\n",*ptr++);//it prints character 'h'.
printf ("%c\n",*ptr);//it prints character 'e'.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
据我所知:在上面的代码中,在*ptr++表达,都*和++具有相同的优先级和操作将需要由右至左的地方,这意味着指针将递增第一和下一个顺从会发生.所以它应该'e'在第一个printf语句中打印字符.但事实并非如此.
所以我的问题是:*ptr++如果它没有在第一个printf语句中取消引用该位置,它将在何处存储递增的值(in,)?
ptr++表示"递增ptr,但返回预增值".
因此,尽管首先发生增量,但它是被解除引用的原始的,未递增的指针.
相反,如果您的优先推理是正确的,*++ptr应该e按照您的预期打印.++ptr表示"递增ptr并返回后增量值".
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |