C++ 数组声明和初始化

显式初始化数组元素

如果指明了维度,那么初始值的总数量不应该超出指定的大小。如果维度比提供的初始值数量大,则用提供的初始值初始化靠前的元素,剩下的元素被初始化成默认值(参见 3.3.1节,第 88 页):

const unsigned s=3;
int ial[sz]={012};         //含有3个元素的数组,元素值分别是0,1,2
int a2[]={012};            //维度是3的数组
int a3[5]={012};           //等价于a3[]={0,1,2,0,0}
string a4[3]={"hi", "bye"};    //等价于 a4[〕={"hi","bye",""}
int a5[2]={0,1,2};             //错误:初始值过多 

不允许拷贝和赋值

不能将数组的内容拷贝给其他数组作为其初始值,也不能用数组为其他数组赋值:

int a[]=(01,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
posted @   double64  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
历史上的今天:
2022-09-21 观察者模式 Observer / Event
2022-09-21 面向对象的设计原则
2022-09-21 计算机系统课程和重构设计模式图书推荐
点击右上角即可分享
微信分享提示