尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

day12

day12
📅 发布时间:2026/7/8 6:47:52

二维数组的概念

二维数组是相同数据类型元素按行和列排列的矩形集合,可以把二维数组写成行和列的排列形式来理解二维数组的逻辑结构。

站在一维数组的基础上理解二维数组,可以理解为:二维数组是把一维数组作为数组的元素。

二维数组的创建和初始化

语法如下:

type arr_name[常量值1][常量值2];

创建示例:

int arr[2][3];

表示定义了一个2行3列的数组。

完全初始化

#include<stdio.h> int main() { int arr[4][2] = { 1,2,3,4,5,6,7,8}; return 0; }

程序会根据2行3列的方式依次进行初始化.

指定行和列进行初始化
#include<stdio.h> int main() { int arr1[2][3] = { {1,2,3},{4,5,6} }; int arr2[2][3] = { {1,2},{4} }; return 0; }
不完全初始化
#include<stdio.h> int main() { int arr1[2][3] = { {1,2,3},{4,5,6} }; int arr2[2][3] = { {1,2},{4} }; return 0; }

在定义数组时可以省略行,不能省略列。

二维数组的访问

二维数组的访问是通过[]的方式进行访问,如上图所示如要确定arr1中数据3的位置,我们可以通过行和列确定。行为0,列为2. 在C语言中确定方式为:数组名[行][列]的方式。、

  • arr[0][2]: 对应数据为:3
  • arr[1][0]: 对应数据为:4
  • arr[1][2]: 对应数据为:6

通过数组下标访问元素

访问单独数据
#include<stdio.h> int main() { int arr[2][3] = { 1,2,3,4,5,6 }; printf("%d\n",arr[0][2]); printf("%d\n",arr[1][0]); printf("%d\n",arr[1][2]); return 0; }
访问数组当中的所有数据
#include<stdio.h> int main() { int arr[2][3] = { 1,2,3,4,5,6 }; int row = 2; int col = 3; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
给数组输入元素
#include<stdio.h> int main() { int arr[2][3]; int row = 2; int col = 3; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { scanf("%d", &arr[i][j]); } } for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0;

在这个过程中

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

这是一个常见的访问/输出一个数组内的数据的方式,在day10中也用了这类似的for循环·。

二维数组在内存当中的存储

二维数组的内存特性

数组本身就是一块连续的存储空间,所以无论是一维数组还是二维数组,我们通过打印地址可以发现内存确实是连续的空间。

#include<stdio.h> int main() { int arr[2][3] = {0}; int row = 2; int col = 3; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]); } } return 0; }

C99中的变长数组

在C99标准之前,C语言在创建数组的时候,数组大小的指定只能使用常量、常量表达式,或者如果我们初始化数据的话,可以省略数组大小。

int arr1[10]; int arr2[3+5]; int arr3[] = {1,2,3};

这样的语法限制,让我们创建数组就不够灵活,有时候数组大了浪费空间,有时候数组又小了不够用的。

C99中给一个变长数组(variable-length array,简称 VLA)的新特性,允许我们可以使用变量指定数组大小。请看下面的代码:

int n = a + b; int arr[n];

上面示例中,数组arr就是变长数组,因为它的长度取决于变量n的值,编译器没法事先确定,只有运行时才能知道n是多少。
变长数组的根本特征,就是数组长度只有运行时才能确定,所以变长数组不能初始化。

变长数组的好处是:

  • 程序员不必在开发时,随意为数组指定一个估计的长度,程序可以在运行时为数组分配精确的长度。
  • 有一个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是说数组的大小是可变的。数组的大小一旦确定就不能再变化了。

相关新闻

  • 零成本打造专业域名邮箱:Cloudflare + Gmail 终极配置保姆级全攻略
  • Three.js 跳动的心教程
  • 医疗系统受勒索袭击案例启发: 漏洞管理与医疗数据备份恢复策略

最新新闻

  • 如何快速打造个性化的Windows任务栏透明美化工具:TranslucentTB完全指南
  • 3步打造你的Windows任务栏美学革命:TranslucentTB深度定制指南
  • 2026年标准物质不确定度亲测指南
  • ICM-42605与PIC18F2682构建高性价比运动追踪方案
  • MP2672A芯片与PIC18LF26J13在电池管理系统中的应用
  • WSEN-ISDS三轴加速度计与PIC18LF4455的运动追踪方案

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号