c语言问题,请高手帮忙解释一下这个程序,谢谢了

2024-12-19 08:32:35
推荐回答(3个)
回答1:

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.
希望对你有所帮助

回答2:

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个元素,
}

回答3:

这个 ,最终结果就是打印一个6吧···