网站首页 > 技术文章 正文
二维数组及多维数组本质上还是线性的数据存储结构,因为内存在本质上就只是线性结构,二维数组转一维数组时,只需要考虑两者的下标对应关系就可以了。
数组名会被编译器处理为指针常量,二维数组可以理解为数组的数组,但却无法用一个二级指针来引用它,因为二级指针无法包含行、列的维度信息,变通的方法就是用一个数组指针来指向它。
以下内容实现的细节见下面的实例:
#include <iostream>
using namespace std;
void main()
{
	int i,j,k;
	const int row=4;
	const int col=5;
	const int rc=20;
	int a[row][col],b[rc];
	for(i=0;i<row;++i)			// 二维数组赋值
		for(j=0;j<col;++j)
			a[i][j]=(i+1)*10+(j+1);
	for(i=0;i<row;++i)			// 二维数组输出
	{
		for(j=0;j<col;++j)
			cout<<a[i][j]<<" ";
		if(j%col==0)
			cout<<endl;
	}
	for(i=0;i<row;++i)		// 用二维数组给一维数组赋值
		for(j=0;j<col;++j)
		{
			k=i*col+j;		// 注意一维数组与二维数组下标的关系
			b[k]=a[i][j];
		}
	for(k=0;k<rc;++k)		// 一维数组输出
	{
		cout<<b[k]<<" ";
		if((k+1)%col==0)
			cout<<endl;
	}
	int(*pa)[col];
	pa=a;		//a已退化为指针常量
	//int **pa;
	//pa=a;//cannot convert from 'int [4][5]' to 'int ** '
	for(i=0;i<row;++i)			// 二维数组用数组指针输出
	{
		for(j=0;j<col;++j)
			cout<<*(*(pa+i)+j)<<" ";
		if(j%col==0)
			cout<<endl;
	}
 system("pause");
}
/*
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
*/
-End-
- 上一篇: 数组结构分为一维数组二维数组一维数组赋值使用
 - 下一篇: 1键搞定数组赋值,并回填数据给工作表
 
猜你喜欢
- 2024-10-19 Excel中使用VBA你不可不知道的使用数组,干货分享
 - 2024-10-19 Excel VBA入门教程1.3 数组基础(vba数组操作方法大全)
 - 2024-10-19 C语言中为何不能直接对一个数组对象赋值
 - 2024-10-19 第七节:C语言基础——二维数组(c语言二维数组怎么用)
 - 2024-10-19 学会这两招,PLC编程也可以批量化定义变量-数组、结构
 - 2024-10-19 1键搞定数组赋值,并回填数据给工作表
 - 2024-10-19 数组结构分为一维数组二维数组一维数组赋值使用
 - 2024-10-19 西门子SCL编程之赋值语句概述及赋值语句的使用方法
 - 2024-10-19 C|折腾二维数组(c++二维数组的赋值)
 - 2024-10-19 什么是C++二维数组?数组中的数组(c++二维数组函数)
 
- 最近发表
 - 
- 聊一下 gRPC 的 C++ 异步编程_grpc 异步流模式
 - [原创首发]安全日志管理中心实战(3)——开源NIDS之suricata部署
 - 超详细手把手搭建在ubuntu系统的FFmpeg环境
 - Nginx运维之路(Docker多段构建新版本并增加第三方模
 - 92.1K小星星,一款开源免费的远程桌面,让你告别付费远程控制!
 - Go 人脸识别教程_piwigo人脸识别
 - 安卓手机安装Termux——搭建移动服务器
 - ubuntu 安装开发环境(c/c++ 15)_ubuntu安装c++编译器
 - Rust开发环境搭建指南:从安装到镜像配置的零坑实践
 - Windows系统安装VirtualBox构造本地Linux开发环境
 
 
- 标签列表
 - 
- cmd/c (90)
 - c++中::是什么意思 (84)
 - 标签用于 (71)
 - 主键只能有一个吗 (77)
 - c#console.writeline不显示 (95)
 - pythoncase语句 (88)
 - es6includes (74)
 - sqlset (76)
 - apt-getinstall-y (100)
 - node_modules怎么生成 (87)
 - chromepost (71)
 - flexdirection (73)
 - c++int转char (80)
 - mysqlany_value (79)
 - static函数和普通函数 (84)
 - el-date-picker开始日期早于结束日期 (76)
 - js判断是否是json字符串 (75)
 - c语言min函数头文件 (77)
 - asynccallback (87)
 - localstorage.removeitem (77)
 - vector线程安全吗 (73)
 - java (73)
 - js数组插入 (83)
 - mac安装java (72)
 - 无效的列索引 (74)
 
 
