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

您所在的位置:网站首页 c语言如何声明一个数组 C 语言之二维数组(详细版)

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

2023-11-25 12:38| 来源: 网络整理| 查看: 265

目录 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 ar[i][j] = ++x; // 初始化 } } for (int i = 0; i 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 assert(ar != nullptr && n > 1); for (int i = 0; i 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 ar[i][j] = rand() % 100; } } } /** 打印函数 */ void Print_Array(int ar[][4], int row, int col) { for (int i = 0; i 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语言之一维数组(详细版)》,请点击此处进行查阅…



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3