C++中数组的初始化规则

C++中数组的初始化规则

C++有几条关于初始化数组的规则,它们限制了初始化的时刻,决定了数组的元素数目与初始化器中值的数目不相同时将发生的情况。我们来看看这些规则。
只有在定义数组时才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组:

int cards[4]={3,6,8,10};// okay
int hand[4]; // okay
hand[4]={5,6,7,9}; // not allowed
hand =cards;// not allowed

然而,可以使用下标分别给数组中的元素赋值。
初始化数组时,提供的值可以少于数组的元素数目。例如,下面的语句只初始化hotelTips 的前两个元素:

float hotelTips[5]=5.0,2.5);

如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,将数组中所有的元素都初始化为0非常简单–只要显式地将第一个元素初始化为0,然后让编译器将其他元素都初始化为0即可:

long totals[500]={0};

如果初始化为11}而不是{0},则第一个元素被设置为1,其他元素都被设置为0。如果初始化数组时方括号内([1)为空,C++编译器将计算元素个数。例如,对于下面的声明:

short things[]=(1,5,3,8};

编译器将使things数组包含4个元素。

通常,让编译器计算元素个数是种很糟的做法,因为其计数可能与您想象的不一样。例如,您可能不小心在列表中遗漏了一个值。然而,这种方法对于将字符数组初始化为一个字符串来说比较安全,很快您将明白这一点。如果主要关心的问题是程序,而不是自己是否知道数组的大小,则可以这样做:

short things[]=(1,5,3,8};
int num elements=sizeof things sizeof(short);

这样做是有用还是偷懒取决于具体情况。

对C++感兴趣的朋友点这里:C/C++课程

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值