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

详解C++编程中数组的基本用法

可以使用数组下标操作符 ([ ]) 访问数组的各个元素。 如果在无下标表达式中使用一维数组,组名计算为指向该数组中的第一个元素的指针。

1

2

3

4

5

6

7

// using_arrays.cpp

intmain() {

charchArray[10];

char*pch = chArray;// Evaluates to a pointer to the first element.

charch = chArray[0];// Evaluates to the value of the first element.

ch = chArray[3];// Evaluates to the value of the fourth element.

}

使用多维数组时,在表达式中使用各种组合。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

// using_arrays_2.cpp

// compile with: /EHsc /W1

#include <iostream>

usingnamespacestd;

intmain() {

doublemulti[4][4][3];// Declare the array.

double(*p2multi)[3];

double(*p1multi);

cout << multi[3][2][2] <<"\n";// C4700 Use three subscripts.

p2multi = multi[3];// Make p2multi point to

// fourth "plane" of multi.

p1multi = multi[3][2];// Make p1multi point to

// fourth plane, third row

// of multi.

}

在前面的代码中, multi 是类型 double 的一个三维数组。 p2multi 指针指向大小为三的 double 类型数组。 本例中该数组用于一个,两个和三个下标。 尽管指定所有下标更为常见(如 cout 语句所示),但是如下的语句 cout 所示,有时其在选择数组元素的特定子集时非常有用。

初始化数组
如果类具有构造函数,该类的数组将由构造函数初始化。如果初始值设定项列表中的项少于数组中的元素,则默认的构造函数将用于剩余元素。如果没有为类定义默认构造函数,初始值设定项列表必须完整,即数组中的每个元素都必须有一个初始值设定项。
考虑定义了两个构造函数的Point 类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// initializing_arrays1.cpp

classPoint

{

public:

Point()// Default constructor.

{

}

Point(int,int)// Construct from two ints

{

}

};

// An array of Point objects can be declared as follows:

Point aPoint[3] = {

Point( 3, 3 )// Use int, int constructor.

};

intmain()

{

}

aPoint 的第一个元素是使用构造函数 Point( int, int ) 构造的;剩余的两个元素是使用默认构造函数构造的。
静态成员数组(是否为 const)可在其定义中进行初始化(类声明的外部)。例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

// initializing_arrays2.cpp

classWindowColors

{

public:

staticconstchar*rgszWindowPartList[7];

};

constchar*WindowColors::rgszWindowPartList[7] = {

"Active Title Bar","Inactive Title Bar","Title Bar Text",

"Menu Bar","Menu Bar Text","Window Background","Frame"};

intmain()

{

}

表达式中的数组
当数组类型的标识符出现在 sizeof、address-of (&) 或引用的初始化以外的表达式中时,该标识符将转换为指向第一个数组元素的指针。 例如:

1

2

charszError1[] ="Error: Disk drive not ready.";

char*psz = szError1;

指针 psz 指向数组 szError1 的第一个元素。 请注意,与指针不同,数组不是可修改的左值。 因此,以下赋值是非法的:

1

szError1 = psz;

http://www.jsqmd.com/news/723967/

相关文章:

  • 3个关键技术方案解决抖音直播实时数据采集难题
  • 聊聊2026年浙江梯形华夫板选购,实力厂商全分析 - 工业设备
  • 手把手教你用Python调参:让LSTM和ARIMA在时间序列预测里“各司其职”(基于PyTorch和pmdarima)
  • XUnity.AutoTranslator完整教程:3步实现Unity游戏实时翻译
  • C++实现String类的方法详解
  • 技术访问者的操作扩展与元素分离
  • 爬虫进阶:用Playwright拦截并分析动态页面请求,精准获取数据源
  • 测试说明文章
  • 【2026最新收藏版】AI Agent详解:从入门到实战,小白程序员必看的大模型智能体学习指南
  • 2026年佛山地区裁断机选购指南,裁断机定制生产的品牌推荐 - 工业设备
  • LeetCode 接雨水:python 题解
  • 如何为Windows系统安装macOS风格鼠标指针:完整配置指南
  • 支付宝上线AI付,让众多“龙虾”实现收钱,详细开通步骤
  • 聊聊2026年浙江性价比高的不锈钢雕塑来图定制企业,哪家值得选 - 工业推荐榜
  • MAUI 嵌入式 Web 架构实战(一) 在 MAUI 应用中嵌入 PicoServer 构建本地 HTTP 服务
  • GitHub中文插件:3分钟实现GitHub界面全面汉化
  • 3分钟掌握ncmdump:网易云音乐NCM文件终极转换指南
  • 合成数据质量评估:SDQM框架解析与应用实践
  • 终极指南:如何在Windows上轻松玩转经典Flash游戏与存档管理
  • Ozon向中国卖家降门槛:零保证金、零佣金拉新,俄罗斯电商蓝海如何用数据精准破局?
  • 2026年4月AI智能体平台推荐:口碑好的产品解决企业AI落地场景碎片化痛点
  • 2.4 静态链表
  • Go语言WebSocket实时聊天后端架构设计与实现指南
  • 智慧树刷课插件终极指南:3分钟实现学习自动化,效率提升300% ⚡
  • Microchip PIC64GX:64位RISC-V多核微处理器解析与应用
  • 飞函如何帮助金融机构把敏感群聊、会议纪要和文件共享纳入合规视野
  • 安海 ADA080N120 碳化硅MOSFET 技术简析
  • 论文阅读:ICLR 2026 A Guardrail for Safety Preservation: When Safety-Sensitive Subspace Meets Harmful-Res
  • 别再手动改Word了!用docxtemplater的{{#each}}和{{#if}}语法,5分钟搞定批量合同生成
  • 软件决策树管理中的选择路径分析者