拓展阅读:二维数组与sizeof

本文是关于C语言二维数组与sizeof运算符的深度解析,通过一系列的sizeof表达式实例,探讨了数组名、地址、解引用在运算中的行为,揭示了sizeof在不同情况下的计算规则。

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

前言:本人为C语言初学者,学识尚浅,研究程度存在很大的局限性,眼界很窄。以下所有观点仅代表个人见解和思路,各位游刃有余的前辈可以给予批评和指正!各位与鄙人同路的学子可相互探讨、发表看法,交换观点!

这是关于上一篇:初学C语言:sizeof 和 strlen 你真的了解吗?的拓展,关于二维数组和 sizeof 的深度解析,如果你能够理解上一篇的内容,这一篇的内容会对你有很大帮助。当然,并不是说你不能直接看这一篇,如果你有深厚的基础且真正了解它们,这一篇也应该不在话下。

目录

1.sizeof(arr);

2.sizeof(arr[0][0]);

3.sizeof(arr[0]);

4.sizeof(arr[0] + 1);

5.sizeof(*(arr[0] + 1));

6.sizeof(arr + 1);

7.sizeof(*(arr + 1));

8.sizeof(&a[0] + 1);

9.sizeof(*(&a[0] + 1));

10.sizeof(*arr);

11.sizeof(a[3]);

数组如下:

int arr[3][4] = {0};

1.sizeof(arr);

int ret = sizeof(arr);

首先,我想关于数组名的两点需要被再次强调:(1)sizeof 中,单独存在的数组名将会计算的是整个数组的大小   (2)&数组名,取出的是整个数组的地址

所以这里单独存在的数组名被计算了整个数组的大小,即为:3行 * 4列 * 4byte = 48byte

2.sizeof(arr[0][0]);

int ret = sizeof(arr[0][0]);

arr[0][0] 即取出第一行第一列的值,为0,即为int类型,所以其大小为:4byte

3.sizeof(arr[0]);

int ret = sizeof(arr[0]);

arr[0] 实则是二维数组中一维数组的数组名,所以计算的应该是整个一维数组的大小,即:   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thepale2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值