C语言二维数组|把数组当成一栋楼,秒懂!
很多初学c语言的学完一维数组,看到int a[3][4]直接懵了。
别慌,今天带你把数组当成一栋楼,方便理解!
🏢 一、二维数组就是一栋楼
一维数组就像一层楼的走廊,房间一间挨一间:
房间0 房间1 房间2 房间3 [ ] [ ] [ ] [ ]二维数组呢?就是一栋多层楼房!
列0 列1 列2 列3 第0层 [0] [0] [0] [0] 第1层 [0] [0] [0] [0] 第2层 [0] [0] [0] [0]声明一栋楼(3层,每层4个房间):
intbuilding[3][4];// 3层楼,每层4个房间- 第一个数字
3→ 楼层数(行数) - 第二个数字
4→ 每层房间数(列数)
🏠 二、房间号怎么叫?
想找人,得说几楼的几号房:
building[楼层][房间号]注意:楼层和房间号都从 0 开始!
building[0][0]→ 1楼1号房building[2][3]→ 3楼4号房
代码示例:
building[0][1]=100;// 1楼2号房住进数字100printf("%d",building[0][1]);// 输出 100📦 三、楼房里都住着谁?(初始化)
方式1:一层一层入住(最清晰)
inta[3][4]={{1,2,3,4},// 第0层住户{5,6,7,8},// 第1层住户{9,10,11,12}// 第2层住户};方式2:排成一队,按顺序入住
inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};跟方式1效果一样,先填满第0层,再填第1层……
方式3:部分入住,剩下的自动补0
inta[3][4]={{1},{5},{9}};相当于:
1 0 0 0 5 0 0 0 9 0 0 0方式4:房子数量可以省,但每层房间数不能省
inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};// 编译器自己算出是3层🧠 四、楼房的真实结构(内存里啥样)
虽然图纸上是楼层,实际在内存里是连成一排的:
第0层房间0,1,2,3 → 第1层房间0,1,2,3 → 第2层房间0,1,2,3就像把每层楼的走廊拆开,首尾相连拼成一条大走廊。
🎮 五、完整演示:给整栋楼安排住户
#include<stdio.h>intmain(){intbuilding[3][4];// 3层4间的楼intfloor,room;// 1. 让用户输入每个房间的住户号printf("请输入12个住户号:\n");for(floor=0;floor<3;floor++){for(room=0;room<4;room++){scanf("%d",&building[floor][room]);}}// 2. 把3楼4号房改成VIPbuilding[2][3]=999;// 3. 打印整栋楼的住户表printf("当前住户表:\n");for(floor=0;floor<3;floor++){for(room=0;room<4;room++){printf("%d\t",building[floor][room]);}printf("\n");}return0;}✨ 六、一句话总结
二维数组 = 一栋楼,行是楼层,列是房间号。
遍历就是从一楼到顶楼,每层挨个房间敲门。
下次遇到arr[i][j],心里默念:第 i 层,第 j 号房,瞬间通透!
如果这篇笔记帮你搞懂了二维数组,记得点赞收藏~
还有哪里迷糊的,评论区留言,我用人话继续给你讲!
