测试“ * ++ p”应如何用C语言编写,我在代码块中调试了我的代码,但得到的值是:“ * ++ p = 6356748”;根据C入门入门书的规定,应为20.为什么我得到这个? 这是我的代码:
#include <stdio.h>
void main()
{
int arr[]={10,20};
int *p=arr;
printf("*P=%d\n",*p);
printf("*p++=%d\n",*p++);
printf("++*p=%d\n",++*p);
printf("*++p=%d\n",*++p);
}
和调试结果:
*P=10
*p++=10
++*p=21
*++p=6356748
答案 0 :(得分:1)
第一个printf打印arr的第一个元素,并且不理会指针p。第二个printf再次打印第一个元素,然后在打印后递增指针p,因此现在p指向arr的第二个元素。第三个printf获取p的第二个元素,然后对其进行递增,但保持p不变。最终的printf递增p,因此它现在指向arr的末尾,然后尝试打印出该地址的内容。没有办法知道那里会发生什么。