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 列 数字不足自动补 0int 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;
}
运行结果
一维数组的知识点详见《C语言之一维数组(详细版)》,请点击此处进行查阅…
C 语言之二维数组(详细版)相关推荐
- C语言求二维数组鞍点
C语言求二维数组鞍点 题目出自谭浩强C程序设计第四版 6.8 鞍点,即该位置上的元素在该行上最大,在该列上最小. 一个二维数组有可能有多个鞍点,当然也可能没有鞍点. 此代码仅考虑鞍点存在的情况 解题思 ...
- go语言定义二维数组
使用go语言二维数组 go语言不用管理内存,很多地方使用起来确实很方便,但是在算法方面确实没有C++优秀,特别是缺少像STL一样优秀模板,定义一个二维数组需要进行如下复杂的操作: go语言的二维数组定 ...
- c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例
在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...
- java二维数组水平翻转,C 语言 利用二维数组实现对输入的数组进行翻转
C 语言 利用二维数组实现对输入的数组进行翻转(帮助理解对图像翻转编辑原理) /* ?输入几行几列数字和翻转方式,如: 3 4 0即代表3行4列,左右翻转: 6 5 1即代表6行5列,上下翻转. 输入 ...
- C语言汇总学生成绩,c语言用二维数组统计学生成绩.doc
c语言用二维数组统计学生成绩 # include /*定义一个求每门课平均成绩的函数AverageCourse 它的形参一个是二维数组,用来传递学生成绩: 一个是指针变量(数组名),存放每门课的平均成 ...
- C语言的二维数组初始化的几种方式介绍(私藏大数组初始化方式)
C语言的二维数组初始化的几种方式介绍 1.直接赋值 2.循环对每个元素赋值 3.借用memset/memset_s初始化为0或-1 4.`数组所有元素初始化为相同值(用于大数组初始化贼方便)` 1.直 ...
- C语言删除二维数组的重复数据的一个方法
C语言删除二维数组的重复数据的一个方法 //以下头文件,未及清理 #include "stdafx.h" #include <vector> #include < ...
- 062是c语言常量吗,C语言ch062二维数组.pptx
<C语言ch062二维数组.pptx>由会员分享,可在线阅读,更多相关<C语言ch062二维数组.pptx(33页珍藏版)>请在人人文库网上搜索. 1.2020/11/11,1 ...
- c语言二维数组存储坐标,C语言的二维数组在内存中的存放顺序
C语言的二维数组在内存中的存放顺序 发布时间:2020-06-28 18:23:49 来源:亿速云 阅读:708 作者:Leah 这期内容当中小编将会给大家带来有关C语言的二维数组在内存中的存放顺序, ...
最新文章
- [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
- GPU与CPU版本的矩阵乘法对比
- python中汉字与变量不可同时出现_Python语言应用培训课(选择练习)
- 将Android源码集成到Eclipse中的方法
- 9203精英挑战赛注意事宜 一
- 个人技术博客(α)------javaweb的学习路程
- ActiveMQ使用教程
- mysql sql多个like性能_一个sql很多个not like的简化语句
- AT89S52单片机思维导图
- OA系统审批流程思路梳理
- Word 特殊符号的插入
- 郑州计算机安全协会安全员考试成绩,安全员C证考试结果查询
- Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).
- Ubuntu16.04下安装MATLAB 2016b!完美运行
- 【时间函数】gettimeofday
- FPGA学习笔记2.2——用Verilog实现七段管的工作逻辑
- OJB查询(一) (转)
- JAVA 时间差8个小时的问题
- 自制Android手机相册
- 计算机组成原理(二)总线
热门文章
- 21岁想学CG插画,怎么学?插画师能做什么工作?
- 安装vmware虚拟机详细教程
- 安装LR11 时,安装Microsoft Visual c++2005 sp1运行时组件,就会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息...
- 计算机毕设 数据可视化分析大屏系统分享
- 文件批量改名工具v2.0_绿色免安装版
- 【笔记】boolean和Boolean的区别
- Windows10 -64 安装tensorflow遇到的:cuda安装后找不到安装文件目录
- am572x时钟配置
- 小米盒子 android 手机控制,五大操作功能实现小米盒子3增强版连接手机
- python科研用哪个软件_科研画图都用什么软件?