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

2025-03-11 09:08:13
推荐回答(2个)
回答1:

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是运算符,不是函数。

回答2:

指针p是一个指针,他指向的是一个大小的5的int数组
*p 也就是p[0],也就是a
p 也就是&p[0],也就是&a

通过p访问数组的第一个元素是p[0][0],或者(*p)[0]