C语言数组(9)--- 数组名(2)
  uUWKQE7Avyk4 2023年11月02日 90 0

一.导入

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

#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)_C语言

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

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

                                                                                                                    王起舟

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  zLxnEsMLk4BL   2023年11月19日   35   0   0 数组字符串数组名
  gBkHYLY8jvYd   2023年11月19日   27   0   0 #include数组ci
  X5zJxoD00Cah   2023年11月19日   21   0   0 数组单引号字符串
  gBkHYLY8jvYd   2023年12月10日   24   0   0 #include数组i++
uUWKQE7Avyk4