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
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
2022-09-21 观察者模式 Observer / Event
2022-09-21 面向对象的设计原则
2022-09-21 计算机系统课程和重构设计模式图书推荐