为了账号安全,请及时绑定邮箱和手机立即绑定

c语言二级指针

c语言二级指针

C
beyourpersonalbest 2016-03-20 12:37:02
如果把数组名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。

查看完整回答
1 反对 回复 2016-03-20
?
onetwosix

TA贡献8条经验 获得超3个赞

其实对于指针的理解,个人觉得应该把指针当钥匙理解,例如:int *p ,a[10]; 在程序中p表示当前地址,用的时候*p是指p当前所在的地址中的元素。**P是二级指针指向一级指针.

查看完整回答
反对 回复 2016-03-21
  • 2 回答
  • 3 关注
  • 1486 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信