C语言中数组的“那些事儿”

本篇文章主要是讲在我们C语言中,重要的知识:数组。人生,就是一场自己与自己的较量(哈哈哈),为了开发更快捷、更方便,那么今天开始我们走就进C语言的重点知识点。数组可以说是目前为止讲到的第一个真正意义上存储数据的结构。不仅如此,数组和指针是相辅相成的,学习数组可以为学习指针打下基础(点击:C语言中指针的“那些事儿”)。

那么到底什么是数组呢?顾名思义数组就是很多数的组合!(为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组)那么这些数有没有什么要求呢,是不是不管什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:

                                             (1)这些数的类型必须相同。

                                             (2)这些数在内存中必须是连续存储的。

换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。

一:一维数组

数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)。使用数组元素时,指明下标即可,形式为:dataType  arrayName[length];

其中,dataType 为数据类型,arrayName 为数组名称,index 为下标。例如,a[0] 表示第0个元素,a[3] 表示第3个元素。

注意的是:

(1)数组中每个元素的数据类型必须相同

(2)数组长度 length 最好是整数或者常量表达式,例如 10、20*4 等,这样在所有编译器下都能运行通过;如果 length 中包含了变量,例如 n、4*m 等,在某些编译器下就会报错

(3)访问数组元素时,下标的取值范围为 0 ≤ index < length,过大或过小都会越界,导致数组溢出,发生不可预测的情况

二:二维数组

二维数组定义的一般形式是:dataType  arrayName[length1][length2];

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。

二维数组在概念上是二维的,但在内存中是连续存放的;换句话说,二维数组的各个元素是相互挨着的,彼此之间没有缝隙。那么,如何在线性内存中存放二维数组呢?有两种方式:

(1)一种是按行排列, 即放完一行之后再放入第二行;

(2)另一种是按列排列, 即放完一列之后再放入第二列。

在C语言中,二维数组是按行排列的。

三:多维数组

C 语言中的多维数组,其实就是元素为数组的数组。n 维数组的元素是 n-1 维数组。例如,二维数组的每个元素都是一维数组,一维数组的元素当然就不是数组了。

多维数组声明时,每个维度用一对方括号来表示:char screen[10][40][80]; 
三维数组 screen 包含 10 个元素,从 screen[0] 到 screen[9]。每个元素又是一个二维数组,它有 40 个元素,这 40 个元素均是一维数组,然后每个一维数组内都有 80 个字符。整体来说,screen 数组有 32000(10×40×80)个 char 类型元素。

想要获取该三维数组 screen 内的某个 char 元素,必须指定 3 个索引值。例如,下面的语句把字符Z写入该数组的最后一个元素位置:screen[9][39][79] = 'Z';

四:数组与指针的区别

(1)数组并不是指针。

(2)指针保存的是数据的地址,数组保存数据本身,指针间接访问数据,首先取得指针的内容,把他做为地址,从这个地址提取数据;数组直接访问数据

(3)数组做为函数参数时会退化为指针。

发布了29 篇原创文章 · 获赞 40 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_21990661/article/details/104721909
今日推荐