关于c++用指针代替数组名通过sizeof函数计算数组长度的问题。

比如:inta[5]={1,2,3,4,5};int(*p)[5]=&a;sizeof(a);//计算数组的正确长度。sizeof(*p);//计算数组的正确长度。我是不... 比如:int a[5]={1,2,3,4,5};
int (*p)[5]=&a;
sizeof(a); //计算数组的正确长度。
sizeof(*p); //计算数组的正确长度。
我是不是可以这样理解:定义的指针p实际上是一个由1个一维数组a组成的二维数组。*p=p[0]也就是二维数组的元素&a也就是一位数组a的地址呢(而不是数组a的第一个元素的地址)??
展开
 我来答
BlueWanderer
推荐于2017-09-21 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2024万
展开全部
sizeof看的是类型。a的类型是int[5],所以长度是5个int的长度。p的类型是int (*)[5],是一个指针,所以如果你对p进行sizeof运算的话,结果是一个指针的长度。而*p的类型又是int[5]所以sizeof *p和sizeof a是一样的。

指针不等价于数组(数组参与运算的时候可能被处理成指针,这是题外话),p是指向一个一维数组的指针。 *p=p[0]的确是一个一维数组。

数组a的地址就是a第一个元素的地址,类型不一样而已。

另外sizeof是运算符,不是函数。
porker2008
2015-03-04 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
指针p是一个指针,他指向的是一个大小的5的int数组
*p 也就是p[0],也就是a
p 也就是&p[0],也就是&a

通过p访问数组的第一个元素是p[0][0],或者(*p)[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式