指向指针的指针和二维数组名等同吗?

 我来答
曾白风骆致
2020-04-01 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:790万
展开全部
int
**p;这是指向指针的指针,表示指针变量p应指向一个指针的地址,注意一定要是指针的地址才不会出错,比如
int
a=1;
int
*p1=&a;
int
**p=&p1;不能是int
**p=&a;因为变量a不是指针,同理
对二维数组a[2][3]的数组名
这里要注意,这里的数组名并不是一个简单的指针,二维数组的数组名是一个指向一维数组的指针,也就是数组名a是一个指向包含有三个元素的一维数组的指针,即(*)[3];因此不可以把数组名赋给指向指针的指针**p,应该把二维数组名赋给int
(*p)[3]这样的指针,这样的指针表示的就是一个指向包含有3个元素的一个数组的指针。
对于数组名不是一个简单的问题,比如一维数组名a[3]那么数组名a表示的是指向第一个元素的指针,但&a却表示的是指向一个含有3个元素的一维数组的指针,具体问题的研究,请去本人的文库下载相应文章吧
简单给你解释下
p是数组,每一个数组元素都是指针,因此*p[1]表示的是指针p[1]所指向地址的值,而p[1]表示的是指针p[1]所指向的地址,因此*p[1]和p[1]是不相同的。现在我们来看数组名p,数组名p表示的地址是&p[0],也就是指针p[0]的地址。
要记住无论是多少维的数组,他的数组名都表示的是&a[0]的地址。
具体的内容请下载本人文章《C指针与数组的混合运算》里面有讲解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式