c语言程序求解~·

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:20:04
#define N sizeof(a)/sizeof(a[0])
void main(){
int a[6]={10,20,30,40},i,*p=a,*p1=&a[5];
p1=p1-4;
*p1++=15;
*p1=*(++p)*2;
for(i=3;i<N;i++)
p[i]=20=i*10;
for(i=0;i<N;i+=2)
printf("%d\t%d\n",a[i],a[i+1]);
}
答:10 15
30 40
50 60
急~问一下:这个程序中的p[i]是指针数组吗?还有好像没有定义过p[i]直接就可赋值?为何要求输出a数组的值,却是之前付给p的值呢?如果可以的话能不能解释一下这个程序。

*p=a;

因为a是数组,,一般用a 表示的话,都表示是数组的头位置的指针, 所以指针p初始化的时候,已经指向了数组a的头位置。。

p[i]等于数组中的a[i],因为数组名a就是一个指针。

p[i]不是指针数组!!!!!