C++ 数组声明和初始化
显式初始化数组元素
如果指明了维度,那么初始值的总数量不应该超出指定的大小。如果维度比提供的初始值数量大,则用提供的初始值初始化靠前的元素,剩下的元素被初始化成默认值(参见 3.3.1节,第 88 页):
const unsigned s=3;
int ial[sz]={0,1,2}; //含有3个元素的数组,元素值分别是0,1,2
int a2[]={0,1,2}; //维度是3的数组
int a3[5]={0,1,2}; //等价于a3[]={0,1,2,0,0}
string a4[3]={"hi", "bye"}; //等价于 a4[〕={"hi","bye",""}
int a5[2]={0,1,2}; //错误:初始值过多
不允许拷贝和赋值
不能将数组的内容拷贝给其他数组作为其初始值,也不能用数组为其他数组赋值:
int a[]=(0,1,2}; //含有3个整数的数组
int a2[]= a; //错误:不允许使用一个数组初始化另一个数组
a2 = a; //错误:不能把一个数组直接赋值给另一个数组
理解复杂的数组声明
int *ptrs[10]; //ptrs是含有10个整型指针的数组
int &refs[10] = /* ?*/; //错误:不存在引用的数组
int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
int *(&arry)[10]=ptrs; //arry是数组的引用,该数组含有10 个指针
要想理解数组声明的含义,最好的办法是从数组的名字开始按照由内向外的顺序阅读。
《C++ Primer》 P103
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-09-21 观察者模式 Observer / Event
2022-09-21 面向对象的设计原则
2022-09-21 计算机系统课程和重构设计模式图书推荐