C++—数组

devtools/2024/10/21 7:51:45/

数组是由一批相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。

语法:

<数据类型> <数组名>[<数组长度>];

数据类型:数组内存放的数据类型,如int、char,表示整型或字符型数组

数组名:和变量一样,提供一个标识符名称,遵循变量命名规范

数组长度:数组内元素数量(数组内存放的数据,每一个称之为一个元素)

int v[5];           定义了一个有5个整型元素的数组
char v[5];        定义了一个有5个char元素的数组
double v[5];        定义了一个有5个double元素的数组
string v[5];        定义了一个有5个字符串元素的数组
bool v[5];            定义了一个有5个布尔型元素的数组

数组的赋值:

int v[2];
v[0]=11;
v[1]=22;int v[2]={1,2};

数组内包含多个元素,每个元素都有一个下标索引。下标索引从0开始,即下标0表示数组第一个元素。可以通过下标索引,访问数组内的各个元素。

数组内元素都是相同类型的,不同类型不可混搭。

数组的特点

特点1 任意类型均可构建数组

基本数据类型:int、float、double、char、string、bool等

复合数据类型:结构体、联合体等

指针类型:int*、char*、float*等

枚举类型:enum

float v1[] = {1.1, 2.2, 3.3, 4.4, 5.5};
double v2[] = {1.1, 2.2, 3.3, 4.4, 5.5};
char v3[] = {'a', 'b', 1, 2, 3};
string v4[] = {"林志铃", "蔡依临", "刘亦飞"};
bool v5[] = {0, 1, true, false};// 枚举类型
enum Color { RED, GREEN, BLUE };
Color colors[] = {RED, GREEN, BLUE, GREEN, BLUE};

特点2 固定大小(无边界检查)

C++数组,一旦定义完成,其大小(长度)即固定。

C++不会做数组边界检查,即下标索引超出数组范围,编译过程中不会报错。

如果超出边界,程序不回报错,可能会修改到别的程序去,会导致程序崩溃!!!

特点3 内存连续且有序

数组内存空间是连续分配的,并且每个元素分配大小取决于存放类型

无论何时访问数组元素,均一致(手动修改值除外),如v[0],取出的都是数值1

也是基于此确保数组元素类型一致,比如int数组每个元素4字节的空间,无法存储double数值

通过 sizeof(数组)/sizeof(数组某元素) 可以得到数组元素个数

特点4 元素值可以修改

通过下标锁定元素,对存储值进行修改

特点5 数组变量不记录数据

数组变量v本身: 并非记录了数组内全部元素(即:不存数据)

而是记录了v[0]元素的内存地址

数组元素访问规律如下: 通过数组变量(如v)记录下标0元素内存位置,即可找到v[0]

通过v[0]地址 + 单个元素空间大小(如int数组,4字节),

即可找到v[1] 通过v[1]地址 + 4字节,即可找到v[2]

…… 以此类推

字符数组

char s[] = "hello";
char s[] = {'h', 'e', 'l', 'l', 'o', '\0'};

在字符数组中,额外在最后添加一个元素\0(空字符),作为结束标记

这种规律不适用中文(ASCII无法表示),中文请使用string类型不要使用char数组

多维数组

多维数组:对数组进行嵌套,即数组内的每个元素依旧是数组。

根据嵌套的层次可以有:二维数组、三维数组、四维数组、…等更多维度的数组。

多维数组实际应用很广泛,特别是二维、三维数组。


http://www.ppmy.cn/devtools/42449.html

相关文章

CR80清洁卡都能用在什么地方?

CR80清洁卡&#xff08;也被称为ISO 7810 ID-1清洁卡&#xff09;的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于&#xff1a; ATM自动终端机&#xff1a;当ATM机的磁条读卡器出现故障或读卡不灵敏时&#xff0c;可以使用CR80清…

基于地理坐标的高阶几何编辑工具算法(4)——线分割面

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 选中待分割面&#xff0c;点击“线分割面”工具&#xff0c;绘制和面至少两个交点的线&#xff0c;双击结束&#xff0c;执行分割操作 应用场景 快速切分大型几何面&#xff0c;以降低面的复杂度&…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈&#xff0c;亲爱的薅羊毛小伙伴们&#xff01; 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利&#xff01;我只花了短短两分钟&#xff0c;就搞到了一张5块钱火车票代金券&#xff0c;简直是天上掉馅饼的节奏啊&#xff01; 话不多说&#xff0c;薅羊毛的姿势给你们摆好…

第13章 Python建模库介绍

以下内容参考自https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version/blob/master/%E7%AC%AC05%E7%AB%A0%20pandas%E5%85%A5%E9%97%A8.md 《利用Python进行数据分析第2版》 用以学习和记录。 本书中&#xff0c;我已经介绍了Python数据分析的编程基…

Ubuntu系统版本查看办法

Ubuntu系统版本查看办法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看内核版本6. 使用 neofetch 命令&#xff08;如果已安装&#xff09;总结 在 Ubuntu 操作系统中&#xff0c;查看当前系统版本的详细信息可…

MySQL之Schema与数据类型优化(四)

Schema与数据类型优化 日期和时间类型 MySQL可以使用许多类型来保存日期和时间值&#xff0c;例如YEAR和DATE.MySQL能存储的最小时间粒度为秒(MariaDB支持微秒级别的时间类型)。但是MySQL也可以使用微秒级别的粒度进行临时运算&#xff0c;接下来会展示如何绕开这种存储限制。…

谷歌I/O开发者大会速览,推出谷歌版GPT-4o?

北京时间 5 月 15 日凌晨1点&#xff0c;谷歌 I/O 开发者大会在美国加州山景城举行。本次大会聚焦 AI 领域最新进展&#xff0c;发布了全新大模型 Gemini 系列&#xff0c;并展示了 Android 15 集成 AI 的新体验。 以下是本次大会的要点速览&#xff1a; Gemini 1.5 Pro模型升…

盲人社区生活支持体系:织就一张温暖的网

在当今社会&#xff0c;构建一个全面、包容的盲人社区生活支持体系成为了推动社会进步、保障残障人士权益的重要议题。随着科技的不断革新&#xff0c;一款名为“蝙蝠避障”的辅助软件走进了盲人的日常生活&#xff0c;它如同一位无形的向导&#xff0c;通过实时避障与拍照识别…