【小收获】数组在声明时整体赋值的细节

在C++中,在全局区声明的数组会自动初始化

如果没有为全局区的整数类型的数组指定初始值,那么它的元素都会被自动初始化为0。该特性适用于所有整数类型的数组,包括char、short、int、long等。(注:char类型数组自动初始化为0,这里的0指的是字符对应的ASCII值,而整数0对应的字符是空字符\0,即全局区的char类型的数组的每个元素都会自动初始化为空字符\0

如果没有为全局区的指针类型的数组指定初始值,则数组元素的初始值为nullptr

如果需要指定其他的初始值,可以在声明数组时进行初始化,例如:

int arr[10] = {1, 2, 3}; // 声明一个包含10个元素的数组,前三个元素的值分别为1、2、3,其余元素的初始值为0

或者利用下标逐个赋值:

int arr[10];
for (int i = 0; i < 10; ++i) {
    arr[i] = i; // 数组元素的值依次为0、1、2、3、4、5、6、7、8、9
}

对int a[10]={0}的误解

因为int a[10]={0}的结果是将数组a中的每个元素都初始化为0,所以以前的我就自认为该行代码的作用是将数组a中的每个元素都初始化为0(错误),这其实是完全不对的,这行代码的实际作用是将数组a的第一个元素初始化为0,而其他9个元素因为没有被初始化所以都被自动初始化为0(正确) 

int a[10]={1};
//这行代码仅仅是将数组中的第一个元素初始化为1,其他9个元素则默认初始化为0
//相当于int a[10]={1,0,0,0,0,0,0,0,0,0,0};

二维数组也是同理,如char a[3][3]={'0'};仅仅是将数组a的第一行第一列的元素初始化为字符'0',而对于其他没有被初始化的元素都被自动初始化为空字符'\0'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古葬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值