【C语言中的数组】
数组是C语言中一种基本的数据结构,它允许程序员存储和管理大量具有相同数据类型的元素。数组通常用于处理批量数据,如排序、搜索等操作。本章将详细介绍一维和二维数组的定义、引用、存储结构以及初始化方法。
### 一维数组
#### 1. 定义
一维数组的定义格式为:`类型说明符 数组名[常量表达式]`。例如,`int a[10]` 定义了一个包含10个整数元素的数组。数组名遵循标识符的命名规则,而方括号内的常量表达式表示数组的长度,必须是编译时常量,不能包含运行时才能确定的变量。
#### 2. 引用
引用数组元素时,使用`数组名[下标]`的形式,其中下标通常是整型常量或整型表达式。例如,`a[0]`代表数组的第一个元素,`a[1]`是第二个元素,以此类推。数组下标的范围是0到长度减1,即`0 <= 下标 < 长度`。
#### 3. 存储结构
一维数组在内存中连续存放,每个元素占用的字节数等于元素数据类型的基本字节数。例如,对于`float mark[100]`,元素`mark[0]`位于最低地址,`mark[99]`位于最高地址,数组元素按顺序排列。
#### 4. 错误示例
- 数组大小为0是无意义的,如`float a[0];`
- 不能使用圆括号来定义数组,如`int b(2)(3);`
- 数组长度不能用变量来表示,如`int k, a[k];`
### 二维数组
二维数组可以看作是一维数组的数组,适用于处理矩阵或表格数据。二维数组的定义类似于一维数组,但包含两个方括号,如`int matrix[3][4]`定义了一个3行4列的二维数组。
### 初始化
数组可以在定义时初始化,也可以在定义后通过赋值语句初始化。例如,可以使用以下方式初始化一维数组:
```c
int a[5] = {1, 2, 3, 4, 5};
```
对于二维数组,初始化时需提供每行的元素,例如:
```c
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
```
### 数组运算
数组支持基本的算术和逻辑运算,如加减乘除、比较等。数组也可以作为函数参数传递,但需要注意,传递数组名实际上传递的是数组的首地址,而非整个数组的副本。
### 示例
以下代码展示了如何定义、初始化和引用一维数组:
```c
#include <stdio.h>
int main() {
int i, a[10];
// 初始化数组
for (i = 0; i < 10; i++)
a[i] = i;
// 输出数组
for (i = 9; i >= 0; i--)
printf("%d ", a[i]);
return 0;
}
```
这个程序首先初始化一个包含10个整数的数组,从0到9,然后反向输出数组的所有元素。
掌握数组的使用对于理解C语言的高级特性至关重要,如指针、内存管理和函数调用等。在实际编程中,数组的应用广泛,因此理解和熟练使用数组对于提升编程能力十分关键。