C 语言之二维数组(详细版)

C 语言之二维数组(详细版)

目录 1.二维数组的定义和初始化 2.二维数组在内存中的存储 3.二维数组的使用 4.数组与函数

1. 二维数组是定义和初始化

1.1 二维数组的定义

定义类型:类型名 数组名[ 行表达式 ][ 列表达式];行与列用常量表达式。

1.2 二维数组的初始化

/** 定义数组 */

int main()

{

int ar[3][4]; // 3 行 4列 未初始化

char br[3][4];

double cr[3][4];

return 0;

}

2. 二维数组在内存中的存储

2.1 二维数组的逻辑表示 注:一个二维数组,在本质上是有多个一维数组构成。(每一个一维数的大小必须相同)

例如:定义 int ar[ 3 ][ 4 ] 的二维数组,它是由 3 个一维数组组成,每个一维数组的大小是 4 个整型元素。可以只对部分元素赋值,未赋值的元素自动取 0 值。

2.1 二维数组的物理表示(按行优先存储) 注: 如果对二维数组的初始化,那么第一维的长度是可以缺省的,但是第二维不可缺省。

int main()

{

int ar[][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; // 3 行 4 列

int br[][4] = { {1,2},{3,4},{5,6} }; // 3 行 4 列 数字不足自动补 0

int cr[][4] = { 1,2,3,4,5,6,7,8 }; // 2 行 4 列

return 0;

}

调试结果

3. 二维数组的使用

二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。

示例

#include

/** 二维数组的应用 */

int main()

{

int ar[3][4]; // 定义二维数组

int x = 0;

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

{

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

{

ar[i][j] = ++x; // 初始化

}

}

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

{

for (int j = 0; j <; ++j) // 打印

{

printf("&ar[%d][%d]=>%#p %d\n",i, j, &ar[i][j], ar[i][j]);

}

}

return 0;

}

运行结果 总结:C 语言中的多维数组基本的定义是以数组作为元素构成的数组,二维数组的数组元素是一维数组,三维数组的数组元素是一个二维数组,以此类推。也就是说,多维数组用的是一个嵌套的定义。

4. 数组与函数

①. 示例一:一维数组作为函数的形参

#include

#include

#include

/** 初始化函数 */

//void Init_Array(int ar[], int n) 数组名退化为指针

void Init_Array(int* ar, int n)

{

assert(ar != nullptr && n > 1); // 断言机制 如果为真则继续进行以下代码

for (int i = 0; i < n; ++i)

{

ar[i] = rand() % 100;

}

}

/** 打印函数 */

void Print_Array(int* ar, int n)

{

assert(ar != nullptr && n > 1);

for (int i = 0; i < n; ++i)

{

printf("%5d", ar[i]);

}

printf("\n");

}

int main()

{

int ar[10];

int n = 10;

Init_Array(ar, n);

Print_Array(ar, n);

return 0;

}

运行结果 ②. 示例二:二维数组作为函数的形参

#include

#include

#include

/** 初始化函数 */

void Init_Array(int ar[][4], int row, int col)

{

for (int i = 0; i < row; ++i)

{

for (int j = 0; j < col; ++j)

{

ar[i][j] = rand() % 100;

}

}

}

/** 打印函数 */

void Print_Array(int ar[][4], int row, int col)

{

for (int i = 0; i < row; ++i)

{

for (int j = 0; j < col; ++j)

{

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

}

printf("\n");

}

printf("\n");

}

int main()

{

int row = 3, col = 4;

int ar[3][4];

Init_Array(ar, row, col);

Print_Array(ar, row, col);

return 0;

}

运行结果 一维数组的知识点详见《C语言之一维数组(详细版)》,请点击此处进行查阅…

相关推荐