C 语言数组完全指南:高效数据存储与访问
数组是一种数据结构,可存储固定大小的同类型元素顺序集合。数组用于存储数据集合,但更有用的是将其视为同类型变量的集合。
无需声明单个变量如 number0、number1... number99,只需声明一个数组变量 numbers,用 numbers[0]、numbers[1]... numbers[99] 代表单个变量。数组特定元素通过索引访问。
所有数组由连续内存位置组成。最低地址对应第一个元素,最高地址对应最后一个元素。

声明数组
C 语言声明数组需指定元素类型和元素数量:
type arrayName [ arraySize ];
这称为一维数组。arraySize 必须大于零的整数常量,type 可为任何有效 C 数据类型。例如声明 10 元素 double 类型数组 balance:
double balance[10];
balance 为变量数组,可容纳 10 个 double 数。
初始化数组
C 语言初始化数组可逐个或用单语句:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
大括号 { } 内值的数量不能超过方括号 [ ] 声明的元素数。
若省略数组大小,将创建刚好容纳初始化值的数组。故写:
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
创建的数组与前例相同。下例赋值单个元素:
balance[4] = 50.0;
将数组第 5 个元素(索引 4)赋值 50.0。所有数组第一个元素索引为 0(基址索引),最后一个元素索引为数组总大小减 1。上述数组图示:

访问数组元素
通过索引数组名访问元素:在数组名后方括号内放入元素索引。例如:
double salary = balance[9];
取数组第 10 个元素赋给 salary。下例演示声明、赋值、访问数组:
Live Demo
#include <stdio.h> int main () { int n[ 10 ]; /* n is an array of 10 integers */ int i,j; /* initialize elements of array n to 0 */ for ( i = 0; i < 10; i++ ) { n[ i ] = i + 100; /* set element at location i to i + 100 */ } /* output each array element's value */ for (j = 0; j < 10; j++ ) { printf("Element[%d] = %d\n", j, n[j] ); } return 0; }
编译执行输出:
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109
数组进阶
数组对 C 至关重要,需更多关注。以下重要概念 C 程序员应掌握:
| 序号 | 概念及说明 |
|---|---|
| 1 | 多维数组 C 支持多维数组。最简单形式是二维数组。 |
| 2 | 向函数传递数组 可通过指定不带索引的数组名向函数传递数组指针。 |
| 3 | 从函数返回数组 C 允许函数返回数组。 |
| 4 | 数组指针 仅指定数组名不带索引即可生成指向数组首元素的指针。 |
C语言