我不明白为什么我得到以下代码的输出1,2,3.我认为它应该是1,2,2.第一次输出的原因是什么?
另外,让我指出还有其他问题与这种指针算术和解除引用有关,但这些问题的答案表明输出应该是1,2,2.
int main()
{
int p[3] = {1,2,3};
int *q = p;
printf("%d\n", *q);
printf("%d\n", *++q);
int x = ++*q;
printf("%d\n", *q);
}
Run Code Online (Sandbox Code Playgroud)
int p[3] = {1,2,3};
int *q = p;
printf("%d\n", *q);
Run Code Online (Sandbox Code Playgroud)
q 指向1.元素,上面打印1
printf("%d\n", *++q);
Run Code Online (Sandbox Code Playgroud)
q 指向2.元素,上面打印2.
int x = ++*q;
Run Code Online (Sandbox Code Playgroud)
2.元素从2增加到3.
printf("%d\n", *q);
Run Code Online (Sandbox Code Playgroud)
q 指向2.元素,上面打印3.