当前位置: 首页 > news >正文

C++—数组

数组是由一批相同类型的元素(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数组

多维数组

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于DdddOcr通用验证码离线本地识别SDK搭建个人云打码接口Api
  • Volatile的内存语义
  • 基于地理坐标的高阶几何编辑工具算法(4)——线分割面
  • 一周开发一个在线客服系统
  • 实现信号发生控制
  • IDEA中一些常见操作【持续更新】
  • echarts-树图、关系图、桑基图、日历图
  • C++ Primer (第五版)第九章习题部分答案
  • 【openpcdet中yaml文件的DATA_AUGMENTOR学习】
  • vue...
  • 二叉树基于队列实现的操作详解
  • python梯度下降法求解三元线性回归系数,并绘制结果
  • EyeMock下载与使用教程
  • 【C++项目】实时聊天的在线匹配五子棋对战游戏
  • in 和exists的区别
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • ComponentOne 2017 V2版本正式发布
  • echarts花样作死的坑
  • js递归,无限分级树形折叠菜单
  • Mybatis初体验
  • Python3爬取英雄联盟英雄皮肤大图
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 记录:CentOS7.2配置LNMP环境记录
  • 实战|智能家居行业移动应用性能分析
  • 微信小程序实战练习(仿五洲到家微信版)
  • 写给高年级小学生看的《Bash 指南》
  • 在Mac OS X上安装 Ruby运行环境
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​flutter 代码混淆
  • #QT(QCharts绘制曲线)
  • #vue3 实现前端下载excel文件模板功能
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)模仿学习-完成后台管理页面查询
  • (转)Google的Objective-C编码规范
  • .dwp和.webpart的区别
  • .jks文件(JAVA KeyStore)
  • @RequestBody与@ResponseBody的使用
  • [Android Pro] AndroidX重构和映射
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [CTO札记]如何测试用户接受度?
  • [DevEpxress]GridControl 显示Gif动画
  • [DL]深度学习_Feature Pyramid Network
  • [FZSZOJ 1223] 上海红茶馆
  • [GDMEC-无人机遥感研究小组]无人机遥感小组-000-数据集制备
  • [Git].gitignore失效的原因