news 2026/5/19 14:22:44

13. 数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
13. 数组

1.数组简介

2.数组的访问与遍历

3.多维数组

4.数组的注意事项


1.数组简介

1).数组简介 数组是C++中一种"存储相同数据类型元素的连续内存集合",可以把它想象成一排编号的储物柜:每个储物柜(数组元素)类型 相同,有唯一的编号(下标),且位置连续 a.数组的大小在定义时必须确定,且一旦定义就无法修改(固定长度)b.数组下标从0开始,例如长度为5的数组,下标范围是0~4
2).数组声明和初始化 a.数组声明// 语法:数据类型 数组名[数组长度];intarr[5];// 声明一个能存储5个int类型元素的数组b.数组初始化#include <iostream>usingnamespacestd;intmain(){// 方式1:完全初始化(指定所有元素)intarr1[5]={1,2,3,4,5};// 方式2:部分初始化(未初始化的元素自动置0)intarr2[5]={1,2};// 结果:[1,2,0,0,0]// 方式3:省略长度(编译器根据初始化列表自动计算长度)intarr3[]={10,20,30};// 长度为3// 方式4:C++11及以上支持的空初始化(所有元素置0)intarr4[5]={};// 结果:[0,0,0,0,0]return0;}

2.数组的访问与遍历

1).单个元素访问 通过"数组名[下标]访问",注意"下标不能越界"
#include <iostream>usingnamespacestd;intmain(){intarr[5]={1,2,3,4,5};cout<<arr[0]<<endl;// 输出第一个元素:1cout<<arr[3]<<endl;// 输出第四个元素:4// 修改元素arr[2]=99;cout<<arr[2]<<endl;// 输出:99// 错误示例:下标越界(arr只有5个元素,下标最大为4)// cout << arr[5] << endl; // 未定义行为,程序可能崩溃return0;}

2).最常用的是for循环,C++11及以上还支持范围for循环#include <iostream>usingnamespacestd;intmain(){intarr[5]={1,2,3,4,5};// 方式1:普通for循环(通过下标遍历)cout<<"普通for循环遍历:"<<endl;for(inti=0;i<5;i++){// i从0到4,覆盖所有下标cout<<arr[i]<<" ";}cout<<endl;// 输出:1 2 3 4 5// 方式2:范围for循环(C++11及以上)cout<<"范围for循环遍历:"<<endl;for(intnum:arr){// 自动遍历arr的每个元素,num是元素值cout<<num<<" ";}cout<<endl;// 输出:1 2 3 4 5return0;}

3.多维数组

二维数组可以理解为"数组的数组",比如一个34列的表格:#include <iostream>usingnamespacestd;intmain(){// 声明并初始化3行4列的二维数组intmatrix[3][4]={{1,2,3,4},// 第一行{5,6,7,8},// 第二行{9,10,11,12}// 第三行};// 遍历二维数组(嵌套for循环)for(inti=0;i<3;i++){// 遍历行for(intj=0;j<4;j++){// 遍历列cout<<matrix[i][j]<<" ";}cout<<endl;// 每行结束换行}return0;}

4.数组的注意事项

1).数组长度必须是常量(不能用变量定义,C++11的constexpr除外)intn=5;// int arr[n]; // 错误:n是变量,C++标准不支持(部分编译器如GCC可能兼容,但不推荐)constintm=5;intarr[m];// 正确:m是常量
2).数组名本质是指向第一个元素的指针intarr[5]={1,2,3};cout<<*arr<<endl;// 输出第一个元素:1(*arr等价于arr[0])
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 17:07:37

SCI制图——火山图简介(一)

一、什么是火山图&#xff1f;——转录组与蛋白组数据分析的标配图表SCI领域的论文&#xff0c;尤其是涉及转录组测序或蛋白质组学的研究&#xff0c;您一定见过这样一张图&#xff1a;成千上万个散点分布在一个平面上&#xff0c;它们像喷发的岩浆一样向两侧上方扩散&#xff…

作者头像 李华
网站建设 2026/5/14 8:37:41

降AI不伤专业术语?2026年实测这2款工具做到了

降AI不伤专业术语&#xff1f;2026年实测这2款工具做到了 很多同学担心&#xff1a;用降AI工具处理后&#xff0c;专业术语会不会被改乱&#xff1f; 我测试了几款工具&#xff0c;结论是&#xff1a;选对工具&#xff0c;专业术语基本不会变。 为什么专业术语容易被改乱&…

作者头像 李华
网站建设 2026/5/5 0:54:19

金手指PCB结构原理与失效机理深度解析

在终端产品返修与失效分析案例中&#xff0c;金手指 PCB 的故障占比常年居高不下&#xff0c;很多用户只关注插拔与清洁&#xff0c;却忽略其结构本质与失效根源。​金手指 PCB 是各类接口类电路板的核心形态&#xff0c;广泛应用于内存条、显卡、PCIe 扩展卡、工业控制板、车载…

作者头像 李华
网站建设 2026/5/7 3:28:18

YOLO26优化:最新注意力机制 | 低计算复杂度的 多尺度线性注意力机制(MSLA)

💡💡💡问题点:基于CNN的方法由于卷积操作的固有局限性,难以有效捕捉全局上下文信息;而基于Transformer的方法则存在局部特征建模不足的问题,同时面临自注意力机制带来的高计算复杂度挑战。 💡💡💡引入多尺度线性注意力机制,旨在以低计算复杂度高效提取图像中的…

作者头像 李华
网站建设 2026/5/7 16:02:48

手动降AI还是用工具?2026年效果对比告诉你答案

手动降AI还是用工具&#xff1f;2026年效果对比告诉你答案 降AI到底要不要花钱&#xff1f;自己手动改行不行&#xff1f; 这是很多同学纠结的问题。这篇文章做个对比&#xff0c;帮你做决定。 手动降AI 做法&#xff1a;一段一段手动改写&#xff0c;打破AI的句式规律。 效…

作者头像 李华