php 字节型数组初始化,c++数组初始化的种类有哪些

c++数组初始化的种类有:1、整型数组的初始化;2、字符串的初始化;3、数组的默认初始化;4、数组的堆初始化。

9336b0217e9bd6b9ab0ce8146c2d16b0.png

c++数组初始化的种类有:

1、整型数组的初始化-栈初始化//默认初始化

int a[5] = {}; //[0, 0, 0, 0, 0]

//全部初始化为0

int a[5] = {0}; //[0, 0, 0, 0, 0]

//c++11新写法

int a[5]{}; //[0, 0, 0, 0, 0]

//注意,想要整型数组 全部初始化为1的时候不能粗暴的设置为

int a[5] = {1}; //[1, 0, 0, 0, 0]

// 因为 数组初始化列表中的元素个数小于指定的数组长度时, 不足的元素以默认值填补。

//可以分别赋值

int a[5] = {1,1,1,1,1}; //[1,1,1,1,1]

2、字符串的初始化-栈初始化

和整型的初始化基本一致,会调用构造函数string *str = string[5]; //调用5次默认构造函数

string *str1 = string[5]{"aaa"}; //数组中的第一个元素调用 string::string(const char *) 进行初始化。后面四个调用 默认构造函数

3、数组的默认初始化

如果不明确指出初始化列表,那么基本类型不会被初始化(全局变量和静态变量除外),所有内存都是脏数据;且自定义的类类型会为每个元素调用默认构造函数进行初始化int a[5]{};

a[6]; //32766

a[10]; //1474921429

// Xcode会提示 Array index 10 is past the end of the array (which contains 5 elements)。虽然不会爆红,但是Xcode提示越界了。这在程序中也是需要特别注意的,越界时会取到脏数据。

string str[5]; //["","","","",""]

string str1[5] = {"","2","",""}; //["","2","',"",""]

string str2[5] = {"a"}; //["a","","","",""]

4、数组的堆初始化int *a = new int[5]; //脏数据数组

int *str = new string[5]; //空字符串数组

int *b = new int[5]{0}; // [0,0,0,0,0]

int *str1 = new string[5] {"aaa"}; //["aaa","","","",""]

//以上几行代码遵循栈中数组的初始化规则,除此之外这里还有一个新语法

int *c = new int[5](); //[0,0,0,0,0]

//该语法后面的一对圆括号,表示使用默认值初始化整个数组,所以对于类类型来说,new string[5] 与 new string[5]() 是等价的,都会调用默认构造函数进行初始化;但是对于基本类型就不同了。new int[5]根本不会初始化,而new int[5]()则会使用int()的值,即0进行初始化。【相关学习推荐:C语言教程视频】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值