关于c语言数组指针指向问题

本文探讨了数组名、指针和特定地址标识的区别,通过实例解释了`a2`、`&a2`和`&a2[0][0]`在内存表示上的差异,并强调了正确处理一维和二维数组指针的重要性。还揭示了常见的编程陷阱,如误用二维数组指针的内存操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

是不是有点疑惑,上面a2, &a2, &a2[0][0]地址一样,为什么*号取出来的值就不一样,说明表示的含义不一样。

a2表示行地址

&a2表示整个二维数组的地址

&a2[0][0] 表示二维数组第一个元素的地址

 看下上面打印的结果:

 

数组名去sizeof就是整个数据大小的数据,其余&取值,都表示地址,按照4个字节处理 

然后sizeof里面如果有*,就表示这片空间的大小。

再来说一下:sizeof(*二维数组名字)  sizeof(*一维数组名字) 第一个数据是一个行指针,第二个数据就是代表具体的某一个数据的大小,具体是数据类型的大小。

上面打印结果就是:20 4

下面说一下指向数组的指针

int (*p)[3]这个指针就是指向数组,同时也可以表示成二维数组的指针,他的行数是固定的,我们必须指定列数。简要说明一下:二维数组指针其实就是一个一维数组指针。

说一下我写的时候犯过的错误:

上面如果是第一种,我们根本不能循环打印出值。

切记不能用int **来保存二维数组的首地址 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值