定义数组a[10] *p,为什么*p=a和p=a效果一样

2025-02-01 20:05:52
推荐回答(3个)
回答1:

方式不一样,目的相同。
int a[10],*p=a;//这是定义时初始化
int b[10],*pb;
pb=b; //这是定义了指针变量pb,再给pb赋值。

回答2:

a即是数组名,也是数组的首地址,也是一个指针型,这表示把p是一个指针型,*p=a表示把数组的地址付给p,p=a 这表示数组的首地址给p

回答3:

问题:在定义时,*p=&a[0]也是成立的,但是在定义之后比如
int a[5] ,*p;
*p=a或者*p=&a[0]就会提示出错
是这样的,p是指针,p里面存的值应该是a的地址,*p表示对应这个地址单元里面存的值
而*p=a,就成了,*p所指向的地址单元里面存的值是a[0]的地址,就不是a[0]的值了
*p=&a[0],跟上面一样的道理,*p所指向的地址单元里面存的值是a[0]的地址