C语言数组赋值指针问题?

*p=a;和p=a; 有什么区别?a是数组名
2024-12-19 14:47:29
推荐回答(2个)
回答1:

在声明里 用:
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 是数组的首地址。

回答2:

给出的信息不完整啊, 比如 p是怎么定义的? *p=a是在p定义时赋值给p的吗?