第三站:C/C++基础-二维数组

二维数组的概念

一维数组本身是多个大小相同的内存块,从0开始逐渐递增所组成的在横向上的有序"组合",

二维数组就是很多个一维数组在纵向上的组合,每一个一维数组就是二维数组在纵向上的从0开始的逐渐递增的一个单位,(所以一维数组在二维数组的基础上,每一个内存块都是不能缺少的)

二维数组作为形参传递时,和一维数组数组是一样的,不是简单的值传递,传递的是数组本身的地址

二维数组的定义和初始化

定义:

二维数组在定义的时候必须指定列数,,行数的元素在有元素的情况下剩余元素会补充为0,列数决定这个二维数组的完整性

二维数组的定义和一维数组一样(注:二维数组作为全局变量进行声明的时候若没有赋初始值,则默认补充为零,但是作为局部变量定义没有赋初始值的时候则会是随机值)

复制代码
#include <iostream>
using namespace std;

void putoutArray(int a[3][4]) {
	for (int i = 0; i < 3; i++){
		for (int j = 0; j < 4; j++) {
			cout << a[i][j]<<" ";
		}
		cout << endl;
	}

}
//作为全局变量进行定义
int test3[3][4];
int main(void) {
    //作为局部变量定义
	int test4[3][4];
	cout << "作为全局变量时" << endl;
	putoutArray(test3);

	cout << "作为局部变量时" << endl;
	putoutArray(test4);
return 0;
}

初始化

在定义的时候初始化

int test134 = {

{1,2,3,4},

{5,6,7,8},

{9,10,11,12}

};

注:最外围括号内部的每个括号相当于初始化一行,括号中可以省略某些元素的初始化.会默认补充为0;

在定义的时候初始化从头开始依次补充后面的值

int test234 = { 1,2,3,4,5,6,7,8,9,10,11,12 };

复制代码
#include <iostream>
using namespace std;

void putoutArray(int a[3][4]) {
	for (int i = 0; i < 3; i++){
		for (int j = 0; j < 4; j++) {
			cout << a[i][j]<<" ";
		}
		cout << endl;
	}

}

int main(void) {

	cout << "第一种初始化方式" << endl;
	//在定义的时候初始化
	int test1[3][4] = {
		{1,2,3,4},
		{5,6,7,8},
		{9,10,11,12}
	};
	putoutArray(test1);
	cout << "第二种初始化方式" << endl;
	//在定义的时候初始化从头开始依次补充后面的值
	int test2[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	putoutArray(test2);

    return 0;
}

二维数组的存储方式

设置断点调试,可以看到二位数组中的所有元素在内存中的存储方式

根据数据可以看到二维数组和一维数组一样也是有序的存放在内存空间的

相关推荐
AI智讯中枢11 分钟前
高性能 C++ 实战 (五):perf+FlameGraph 火焰图生产实战,精准定位 CPU / 缓存 / 锁瓶颈,避坑 + 完整实操案例
linux·c++·性能调优·性能分析·perf·flamegraph·火焰图
繁华的地方不一定留下你的脚印17 分钟前
C++ 算法与 ranges:用 find_if、transform 写清数据处理意图
开发语言·c++·算法
张小姐的猫18 分钟前
【AI大模型接入SDK】 —— 前端页面 & 项目总结与拓展
前端·数据结构·数据库·c++·人工智能·chatgpt
AC赳赳老秦1 小时前
财报附注表格精准提取:OpenClaw 从 PDF 年报附注挖掘隐藏明细,补齐财务分析维度
java·汇编·c++·python·青少年编程·deepseek·openclaw
欧特克_Glodon1 小时前
OpenCV计算机视觉开发入门与实践(基于C++):专栏内容介绍及目录
c++·人工智能·opencv·计算机视觉
码匠许师傅1 小时前
【C++三方组件】Asio 下篇:C++20 协程版 TCP 客户端与服务端
c++·tcp/ip·c++20
ACP广源盛139246256732 小时前
接口适配方案选型|GSV6125@ACP HDMI2.0 转 Type‑C/DP1.4 桥接芯片工程评估
大数据·c语言·开发语言·硬件架构·硬件工程·国产芯片
一只旭宝2 小时前
【C++复习】四种类型转换 + 常见设计模式 + Redis/MySQL(后端面试复习完整版)
c++·redis·笔记·mysql·设计模式
rhett. li2 小时前
用 AI 写 C++ 桌面 UI:TRAE + nim_duilib 实战指南
c++·人工智能·ui
ShineWinsu2 小时前
对于Redis:Redis特性以及应用场景的解析
linux·c++·redis·缓存·高并发·分布式系统·key-value