前言:本人为C语言初学者,学识尚浅,研究程度存在很大的局限性,眼界很窄。以下所有观点仅代表个人见解和思路,各位游刃有余的前辈可以给予批评和指正!各位与鄙人同路的学子可相互探讨、发表看法,交换观点!
这是关于上一篇:初学C语言:sizeof 和 strlen 你真的了解吗?的拓展,关于二维数组和 sizeof 的深度解析,如果你能够理解上一篇的内容,这一篇的内容会对你有很大帮助。当然,并不是说你不能直接看这一篇,如果你有深厚的基础且真正了解它们,这一篇也应该不在话下。
目录
数组如下:
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] 实则是二维数组中一维数组的数组名,所以计算的应该是整个一维数组的大小,即: