目录
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<stdio.h>
/** 二维数组的应用 */
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<stdio.h>
#include<stdlib.h>
#include<assert.h>
/** 初始化函数 */
//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<stdio.h>
#include<stdlib.h>
#include<assert.h>
/** 初始化函数 */
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;
}