首页后端开发其他后端知识c++数组初始化有什么类型,分别是什么

c++数组初始化有什么类型,分别是什么

时间2024-03-24 10:14:03发布访客分类其他后端知识浏览1097
导读:在这篇文章中我们会学习到关于“c++数组初始化有什么类型,分别是什么”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。 c++数组初始化的种类有:...
在这篇文章中我们会学习到关于“c++数组初始化有什么类型,分别是什么”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。


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

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++数组初始化有什么类型,分别是什么”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c++数组初始化有什么类型,分别是什么
本文地址: https://pptw.com/jishu/651992.html
php可以将一维数组转为对象吗,应该怎么做 php字符串处理想要移除前4个字符有什么方法

游客 回复需填写必要信息