今天是我刚接触c语言的第十天,摸爬滚打学到了二维数组。我来给大家分享一下学习的心得吧。
第一个就是二维数组的创建,我们可以发现他和之前学到的一维数组 int arr[]; 有什么区别呢?其实区别也不大,只是形式上的区别。
这就是一个二维数组3行4列的效果;我们在脑海里要有这么一个认识,下面要讲到。
小知识:二维数组创建的时候列不能像一维数组一样省略掉,行是可以省略的。
那么 int arr[100][100];是不是100行100列呢?答案是肯定的。
既然我们知道了二维数组的创建,肯定要知道怎么初始化:
int arr [3][4] = {1,2,3,4,5}; 这个是不完全初始化;
要知道数组的下标是从0开始的,那么0行0列的值就是1,0行1列的值是2,0行2列的值是3,0列3行的值是4,好到这里就结束了。那么我们存到二维数组里面的5这个值去哪里了呢,自然是存到了第1行的第0列处,可以看到1行0列的值是5,后面的都没有被初始化到,自然而然的默认为0了。(数组下标从0开始,所以0行0列代表数组的第1行第1列的值)
那我们可不可以把123放到第1行,把45放到第二行呢,答案是可以的。
代码咔往上这么一打,int arr = { {1,2,3}, {4,5} };
运行一下
把4和5的值放到了第二行去了(数组下标为1)
,其他的行和列没被初始化默认为0。
二维数组的运用既然知道了什么是二维数组,那怎么去调用二维数组中的值呢?如果要把一个二位数的值,全部打印出来,该怎么做呢?
把一个3行4列的二维数组的值打印出来
运行结果
知识拓展其实我们假想二维数组是这么一块一块的几行几列的格子,但实际上它是这么存的。
第1行4个元素,第2行紧跟在它屁股后面 ,第3行以此类推,希望大家能够理解。
下面这幅图是非常建议大家学习的,我们可以把一行一行的二维数组,比作一个个的一维数组。每个一维数组都有一个数组名吧,那么我们这个arr[3][4]二维数组中,arr0是不是就相当于一个一维数组。arr0为数组名,里面存放4个int元素,假如我们要调用第一个元素,可以写成arr[0][0]。



