在声明里 用:
int a[3]={1,2,3};
int *p=a,i;
for (i=0;i<3;i++) printf("%d %d\n",*(p+i),p[i]);
在语句里用:
int a[3]={1,2,3};
int *p,i;
p=a;
for (i=0;i<3;i++) printf("%d %d\n",*(p+i),p[i]);
两者效果一样。
语句里,p 是地址,语句里,*p 是指向的值。
声明里,int *p 是指针, 声明里,int p 是变量。
外形相同,在语句里 和 在声明里 意思不同。(形式逻辑在c语言里,不成立!)。
赋值号右边的 a 是数组的首地址。
给出的信息不完整啊, 比如 p是怎么定义的? *p=a是在p定义时赋值给p的吗?