阅读量:0
C语言中的二维数组是一种特殊的数据结构,它可以被看作是一个数组的数组,即“数组的矩阵”。二维数组允许你在两个维度上存储数据,通常用于表示表格数据,比如棋盘的布局、矩阵、学生成绩表等。
1.定义二维数组
二维数组的定义方式如下:
类型名 数组名[行大小][列大小];
例如,定义一个3行4列的整型二维数组:
int arr[3][4];
这里,arr
是一个二维数组的名称,它有3行4列,总共可以存储12个整型值。
2.初始化二维数组
你可以在声明二维数组的同时初始化它,也可以使用循环语句来初始化。
(1)直接初始化:
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
(2)使用循环初始化:
#include <stdio.h> int main() { int i, j, arr[3][4]; for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { arr[i][j] = i * 4 + j + 1; // 示例填充逻辑 } } // 打印数组内容 for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
(3)部分初始化
可以在定义的时候,只对二维数组的部分元素赋初值,其余元素自动为0。
3.访问二维数组元素
访问二维数组中的元素需要使用两个索引,一个表示行,另一个表示列。例如,arr[1][2]
访问的是第二行第三列的元素(注意,索引从0开始)。
4.二维数组的遍历
遍历二维数组意味着按照某种顺序访问数组中的每个元素。最常见的遍历方式是使用嵌套的for循环,外层循环遍历行,内层循环遍历列。
以下是遍历上述二维数组的一个例子:
#include<stdio.h> int main() { int i; int j; int array[][3]={99,88,77,66,55,44,33,22,11}; for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("array[%d][%d]=%d ",i,j,array[i][j]); } putchar('\n'); } return 0; }
这段代码会按照从左到右、从上到下的顺序打印出二维数组中的每个元素,并在每打印完一行后换行。
array[0][0]=99 array[0][1]=88 array[0][2]=77 array[1][0]=66 array[1][1]=55 array[1][2]=44 array[2][0]=33 array[2][1]=22 array[2][2]=11
5.注意事项
- 数组的大小(包括行数和列数)在声明时必须为常量表达式,不能是变量。
- 访问数组时,索引值必须在数组的范围内,否则会发生越界错误,这可能导致未定义行为,包括程序崩溃。
- 初始化二维数组时,可以只初始化部分元素,未初始化的元素将自动初始化为0(对于静态存储期的数组)。
- 如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维(行)的长度可以不指定,但第2维(列)的长度不能省。
二维数组是C语言中非常基础且强大的数据结构之一,掌握它对于理解和使用更高级的数据结构(如结构体、指针数组等)至关重要。