一.导入
我们上篇文章讲了一维数组的数组名,接下来我们将介绍二维数组的数组名,我们先来猜一下以下代码执行的结果是多少:
#include<stdio.h>
int main(void)
{
int arr[3][4];
int sz = sizeof(arr);
printf("%d",sz);
return 0;
}
A. 3
B. 4
C. 12
D. 48
答案:D,解析:我们之前说过二维数组是以矩阵形式的,有行与列之分,那么就可以得出整个数组的大小为 行x列 也就是4x3,由于这是一个整型数组,每一个元素的大小都为4个字节,那么就是 4x3x4 = 48,故选D
我们之前说过数组名代表数组首元素的地址(2种特殊情况除外),那么在二维数组中是不是也是这样呢,如 arr; 这段代码代表着什么呢?
其实二维数组与一维数组不同,二维数组数组名是代表第一行的地址,如图所示:
由此我们可以用这个结论来计算二维数组的行数,代码如下:
sizeof(arr)/sizeof(arr[0]);
既然能计算出二维数组的行数,那么我们也可以计算出二位数组的列数,我们只需要将行数除以第一个元素就可以得出二维数组的列数,代码如下:
sizeof(arr[0])/sizeof(arr[0][0]);
程序运行结果如下:
我们再来看一下printf()函数中每一个参数的值
sizeof(arr); -----> 48
sizeof(arr[0]); ----->16
sizeof(arr[0][0]); ----->4
2023/9/2
王起舟
标签:arr,int,二维,C语言,---,数组名,数组,sizeof From: https://blog.51cto.com/u_16183773/7334903