C语言二维数组是C语言语法中一个很重要的概念,也是一个比较难以理解的点。二维数组之所以不好理解是因为它是一个数组的数组,从名字上来看就会让人心生畏惧;再从头脑理解的角度来看,需要在脑海中构建出C语言数组的数组的形象画面,这很抽象也很吃力。不过二维数组真没那么可怕,希望我下面的讲解会让你发自内心的感慨:原来C语言二维数组这么简单!
在说C语言二维数组之前,我们先说说一维数组。
一、C语言一维数组我定义一个C语言中的一维数组,如下:
int array_one[3] = {1,2,3};
英文单词”array“的中文意思是”数组“,我就用它来表示这个数组的名字。这个数组有三个元素,分别是1,2,3,这个大家都很好理解了。之所以这个C语言数组叫”一维数组“,是因为array_one数组的元素已经是最小的实体了,不可再拆开了。你说数字1,2,3你咋拆开,对不对?所以C语言一维数组核心概念在于一个关键词:不可”拆开“。下面说到C语言二维数组时,会用”拆开“这个关键词来解释。
二、C语言二维数组下面我再定义一个C语言中的二维数组,如下:
int array_two[2][3] = { {1,2,3}, {4,5,6} };
这种写法表示array是一个二维数组,它包含两个元素,每个元素又是一个数组。看到这你是不是有点犯晕了?没关系,我们慢慢剖析。
1、C语言二维数组与一维数组写法的比较
从一维数组与二维数组的写法上来看,有两个不同点:
第一个区别:
array_one[];
array_two[][];
一维数组后面紧跟一个方括号,而二维数组后面会有两个方括号;
第二个区别:
{1,2,3};
{ {1,2,3}, {4,5,6} };
在元素赋值方面,一维数组使用了一个花括号,二维数组在使用了一个花括号的同时在里面又有两个小花括号。
写法上就这两个区别,你也不用去钻牛角尖为什么二维数组要有两个方括号、花括号里为啥又嵌入了花括号,你只要记住二维数组就是这么写的就行了。重点是下面:
2、C语言二维数组与一维数组含义的比较
一维数组array_one之所以叫一维数组,是因为它的元素1,2,3是不可再拆开的东东。
二维数组array_two之所以叫二维数组,是因为它的元素是可以继续拆开的。你可以把C语言二维数组array_two看成以下形式:array_two[2][3]={array_two[0], array_two[1]}。它的第一个元素是array_two[0],第二个元素是array_two[1]。其中:
第一个元素array_two[0]又可以拆开为{1,2,3},你可以看成array_two[0] = {1,2,3};
第二个元素array_two[1]又可以拆开为{4,5,6},你可以看成array_two[1] = {4,5,6};
换句话说, C语言二维数组array_two的元素是array_two[0]和array_two[1],它们各自是可以继续拆开的,这就是二维数组的所谓”二维“的核心含义。
所以啊,你使用”拆开“这个关键词来理解C语言二维数组和一维数组就很好理解,就是一个的元素不可拆开,一个的元素还可以继续拆开嘛!所以,这次你理解了吗?