我无法弄清楚这一点.也许是因为凌晨2点.无论如何,我在这里不知所措.
#include <stdio.h>
int main()
{
char array[] = "123456789";
char* ptr = array;
printf("%c\n", *(ptr++));
printf("%c\n", *ptr);
*ptr = array[3];
printf("%c\n", *(ptr++));
printf("%c\n\n", *ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是:
1
2
4
3
Run Code Online (Sandbox Code Playgroud)
我有一个指针,我指定array.
然后我打印,我认为将是第一个索引('2'),而是得到1.- 所以,我假设它*(ptr++)实际上是取消引用,然后才增加指针.
然后我重新分配ptr第四个索引('4')并重复步骤2.这样就可以正常工作,因为我看到C在解除引用之前不会先计算括号.
然后我打印新增加ptr的显示('5')...我得到了3?
那是怎么回事,第1步和第2步以及第3步和第4步是相同的,但是我得到了不同的结果?