如果把数组名a传递给形参**p,是不是*p=&a[0],p=a[0]?还是不太理解二级指针变量**p 、*p和p三者的关系
2 回答
onemoo
TA贡献883条经验 获得超454个赞
你没说明p和a是如何声明的,我先假定p是int **p,a是int a[xx]。
那么 *p = a 和 *p = &a[0] 都对,p = a[0] 则不正确。
p是指向int指针的指针,那么*p得到的就是一个int指针。同理**p就是那个p所指的指针指向的变量。
数组名做右值时会自动转为指向其首元素的指针,所以 *p = a; 这句中右侧的a就相当于指向a[0]的指针,同样也是int指针,所以和*p的类型相同。
&a[0] 得到的就是指向a首元素的指针,同样也和*p类型相同。
a[0] 得到的元素就是int类型,无法直接转换为指针,所以不能赋值给*p。
onetwosix
TA贡献8条经验 获得超3个赞
其实对于指针的理解,个人觉得应该把指针当钥匙理解,例如:int *p ,a[10]; 在程序中p表示当前地址,用的时候*p是指p当前所在的地址中的元素。**P是二级指针指向一级指针.
- 2 回答
- 3 关注
- 1486 浏览
添加回答
举报
0/150
提交
取消