a定义了一个数组,并把a的地址赋给指针p;
clrscr()是清屏函数
for(i=0;i<4;i++)
a[i]=*p++;
在循环里,*p++很有迷惑性,考察*和++两个操作符号的优先级,*的优先级更高些。
所以a[i]=*p++; 表示先把*p指向的数值赋给a[i],然后p++,就是指向下一个地址。
整个循环,没有改变a[i]的数值。
printf("%d\n",a[2]);输出a[2]的数值,为6.
希望对你有所帮助
main()
{
int a[]={2,4,6,8},
int*p=a; //指针p指向数组a
int i;
clrscr(); //应该是system("cls");才对吧,作用是清屏
for(i=0;i<4;i++)
a[i]=*p++; /*依次把p指向的元素赋给数组a中的元素,但在这是多余
了,因为p本身就是指向数组a的,相当于把自己赋给自己了。*/
printf("%d\n",a[2]); //输出数组中第3个元素,
}
这个 ,最终结果就是打印一个6吧···