0
点赞
收藏
分享

微信扫一扫

C语言数组(9)--- 数组名(2)

一.导入

我们上篇文章讲了一维数组的数组名,接下来我们将介绍二维数组的数组名,我们先来猜一下以下代码执行的结果是多少:

#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; 这段代码代表着什么呢?

其实二维数组与一维数组不同,二维数组数组名是代表第一行的地址,如图所示:

C语言数组(9)--- 数组名(2)_数组

由此我们可以用这个结论来计算二维数组的行数,代码如下:

sizeof(arr)/sizeof(arr[0]);

既然能计算出二维数组的行数,那么我们也可以计算出二位数组的列数,我们只需要将行数除以第一个元素就可以得出二维数组的列数,代码如下:

sizeof(arr[0])/sizeof(arr[0][0]);

程序运行结果如下:

C语言数组(9)--- 数组名(2)_二维数组_02

我们再来看一下printf()函数中每一个参数的值

sizeof(arr); -----> 48
sizeof(arr[0]); ----->16
sizeof(arr[0][0]); ----->4

                                                                                                                 2023/9/2

                                                                                                                    王起舟

举报

相关推荐

数组名(sizeof、strlen)#c

0 条评论