5.6 本章小结
数组是同一类型数据的集合,我们将数组中每个数据单元称为数组元素,数组适合对大规模的数据进行存储和管理。C 语言中,数组的定义格式如下:
数据类型 数组名[整型常量表达式];
数组名后的中括号被称为维,中括号内表达式的值就是维的大小,它必须是一个大于 0 的整型常量值。
数组的长度就是数组元素的个数,即数组定义时所指定的维的大小。
可以通过 sizeof 运算符来获取数组的大小,即数组占用内存的字节数。
在定义数组的同时,可以对其进行初始化,即将数组元素初始化为初始值列表中的各初始值。数组的初始化方式有:全部初始化、部分初始化和指定初始化。使用全部初始化时,可以省略数组定义中维的大小,此时编译器会根据初始值列表中初始值的个数来确定数组的长度。
访问数组中的元素,需要使用下标,格式为:
数组名[下标值]
中括号与下标值构成数组的下标。下标值必须是一个从 0 开始的整数,它可以是常量、变量,甚至是一个表达式或函数调用语句。在使用数组下标时,应控制下标值在合理区间范围之内,合理区间范围为 0~数组长度减 1,否则会造成数组的越界访问。
可以把数组元素当作具有相同数据类型的变量一样来使用,包括将它作为函数调用的实际参数,在这种情况下,形参的改变不会影响到实参,即数组元素的值不会被修改。
数组作为参数进行传递时,虽然也是值复制的方式,但是这个值并不是数组中的元素,而是这个数组在内存中的位置。因此,通过数组类型的形参可以间接地修改实参数组中元素的值。
由于数组类型的形参只用于指定数组的内存位置,并不包含数组长度信息,因此,我们通常会在函数中再添加一个 int 类型的参数,用于提供数组的长度。
字符数组就是数据元素全是 char 类型的数组,它可以存储字符或字符串。
字符串就是以空字符作为结尾的一段字符序列。空字符是一个转义字符,用'\0'表示,它所对应的 ASCII 码值为 0。
将字符串存储至数组可以采用字符式存储或字符串式存储两种方式。
可以使用“stdio.h”中提供的库函数来获取用户输入的字符串,并将其保存至字符数组中。scanf 函数在读取字符串时遇到空格字符就会停止,而 gets 函数在读取字符串时遇到换行字符才会停止,因此,它可以获取一行的字符串。
puts 函数可以将参数所指定的字符串打印输出,并自动在字符串后面添加一个换行字符,起到换行的效果。
字符串的长度为字符串中有效字符的个数,不包含作为结尾标志的空字符。而字符串的大小是它所占用的内存字节数,包含空字符所占用的内存空间。
有两个维的数组就是二维数组。通常将二维数组看成是一个有着行和列的二维表格。
二维数组的定义格式为:
数据类型 数组名[整型常量表达式 1][整型常量表达式 2];
二维数组的长度为两个维大小的乘积,二维数组的大小为其长度与数组元素类型大小的乘积。
二维数组的初始化方式有普通初始化方式、行初始化方式与指定初始化方式。
二维数组元素的访问格式为:
二维数组名[下标 1][下标 2];
下标 1 对应着数组元素所在的行,下标 2 对应着数组元素所在的列,通过行和列就能精确定位到该数组元素的位置,然后像普通变量一样来使用这个数组元素。我们通常使用双层的循环结构语句来遍历二维数组中的所有元素,外层循环以行为单位,内层循环以列为单位。
将二维数组作为函数参数时,必须指定第二维的大小。由于此参数中只含有数组的内存位置和第二维大小的信息,所以,通常是在函数中使用一个单独的参数来提供该数组第一维的大小。
C 语言中,根据维的数目,可以把数组分为一维数组和多维数组。所谓多维数组就是维数大于 1 的数组,因此,二维数组也算是多维数组,只不过是最简单的多维数组罢了。换另一种思维模式来理解,多维数组其实就对一维数组的多层嵌套。
对于小规模的数组数据,可以使用冒泡排序算法来对数组元素进行排序。
所谓转置矩阵,就是将原来矩阵中的行变成列、列变成行,从而得到一个新的矩阵的过程。通过二维数组,可以非常方便地存储和转置矩阵。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论