c语言中二维数组怎么用?

什么是二维数组

在c语言中,二维数组是由多个一维数组组成的,也就是说,二维数组包含了许多行和列。一维数组的下标是只有一个,而二维数组的下标有两个,第一个下标表示行数,第二个下标表示列数。二维数组的定义方式如下:

数据类型 数组名[行数][列数];

其中,数据类型是指这个数组中每个元素的数据类型,数组名是这个数组的名称,行数表示数组中一共有多少行,而列数表示数组中每行有多少个元素,注意行数和列数都必须是正整数。

二维数组的初始化

使用双重循环初始化

同一维度的数组初始化方法相同,二维数组可以使用嵌套的循环来进行初始化,如下:

int arr[3][4];

int i, j;

for (i = 0; i < 3; ++i) {

for (j = 0; j < 4; ++j) {

arr[i][j] = i * 4 + j;

}

}

以上代码的意思是,定义了一个3行4列的int类型数组arr,然后利用嵌套的两个for循环,对数组的每一个元素进行了初始化。

数组元素初始化

如果只想对二维数组的某些元素进行初始化,可以使用类似一维数组的方式,如下:

int arr[3][4] = {

{0, 1, 2, 3},

{4, 5, 6, 7},

{8, 9, 10, 11}

};

以上代码的意思是,定义了一个3行4列的int类型数组arr,并且直接利用大括号对每个元素进行了初始化。

二维数组的使用

访问二维数组的元素的方式和一维数组一样,只需要用两个下标来表示行数和列数即可。

int arr[3][4] = {

{0, 1, 2, 3},

{4, 5, 6, 7},

{8, 9, 10, 11}

};

int num = arr[2][3]; // num的值为11

以上代码中,访问arr数组中第3行第4列的元素,即11。

二维数组作为参数传递

在c语言中,函数可以接收数组作为参数,二维数组也不例外。当我们将一个二维数组作为参数传递给函数时,可以用以下两种方式:

把整个数组作为参数传递

把数组的每一行作为参数传递

以下是二者的具体实现:

//以下代码是把整个数组作为参数传递

void printArray(int arr[][4], int rows) {

int i, j;

for (i = 0; i < rows; ++i) {

for (j = 0; j < 4; ++j) {

printf("%d ", arr[i][j]);

}

printf("\n");

}

}

int main() {

int arr[3][4] = {

{0, 1, 2, 3},

{4, 5, 6, 7},

{8, 9, 10, 11}

};

printArray(arr, 3);

return 0;

}

以上代码中,printArray函数接收一个二维数组和行数作为参数,然后使用嵌套的for循环打印出数组中的每一个元素。

//以下代码是把数组的每一行作为参数传递

void printRow(int *row, int cols) {

int i;

for (i = 0; i < cols; ++i) {

printf("%d ", *(row + i));

}

printf("\n");

}

int main() {

int arr[3][4] = {

{0, 1, 2, 3},

{4, 5, 6, 7},

{8, 9, 10, 11}

};

int i;

for (i = 0; i < 3; ++i) {

printRow(arr[i], 4);

}

return 0;

}

以上代码中,printRow函数接收一个一维数组和列数作为参数,然后打印出该行的每一个元素。

总结

二维数组是c语言中非常重要的数据类型之一,它可以方便的处理多行和多列的数据。使用时需要注意二维数组的初始化和访问方法,以及如何将二维数组作为参数传递给函数。

后端开发标签