c++数组初始化的种类有哪些

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

c++数组初始化的种类有哪些

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

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

//默认初始化int a[5] = {};    //[0, 0, 0, 0, 0]//全部初始化为0int 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、字符串的初始化-栈初始化

和整型的初始化基本一致,会调用构造函数

立即学习“C++免费学习笔记(深入)”;

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

登录后复制

3、数组的默认初始化

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

int a[5]{};a[6];      //32766a[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语言教程视频】

以上就是c++++数组初始化的种类有哪些的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2432797.html

(0)
上一篇 2025年3月3日 09:12:14
下一篇 2025年2月19日 15:08:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • c++ vector用法是什么

    c++kquote>c++ vector用法是:1、创建vector对象;2、尾部插入数字;3、使用下标访问元素;4、使用迭代器访问元素;5、插入元素;6、)删除元素等等。 在c++中,vector是一个十分有用的容器,c++ vec…

    2025年3月3日
    200
  • c++引用和指针的区别是什么?

    区别:1、指针有自己的一块空间,而引用只是一个别名;2、指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能被改变;3、指针可以有多级指针(例**p),而引用至于一级;4、指针和引用使用“++”运算符的意义不一样。 相关推荐:C…

    2025年3月3日
    200
  • vc++和c++之间有什么区别?

    c++kquote>区别:C++是一门编程语言,是全球统一使用的语法标准;而VC++是微软公司的免费C++开发工具,具有集成开发环境,程序员可以在VC++中编写源代码文本,编译打包成CPU可执行的机器程序。 vc++一般指Micros…

    2025年3月3日
    200
  • c++中=和==的区别有哪些?

    c++kquote>区别:1、“=”是赋值的意思,是赋值运算符;而“==”是相等运算符,用于判断两边是否相等;2、“=”运算符存在强制类型转换,而“==”不存在强制转换。 c++中=和==的区别 1、含义不同: “=”是赋值的意思。 …

    2025年3月3日
    200
  • C++运算符中不能重载的是哪些

    C++运算符中不能重载的有:1、条件运算符“?:”;2、成员访问运算符“.”;3、域运算符“::”;4、长度运算符“sizeof”;5、成员指针访问运算符“->*”和“.*” 。 相关推荐:《C++视频教程》 重载:让操作符可以有新的…

    2025年3月3日
    200
  • c++中头文件和源文件的区别是什么

    区别:头文件是“.h”文件,提供接口;源文件是“.cpp”文件,提供实现。编译器规定源文件必须包含函数入口,即main函数;而头文件不得包含函数入口,头文件不可以单独编译成一个程序,仅仅包含程序片段或者定义常,变量。 本文操作环境:Wind…

    2025年3月3日
    200
  • c++中不能重载的运算符有哪些

    c++中不能重载的运算符有5个:“?:”、“.”、“::”、“sizeof”、“.*” 。 “.”和“::”运算符如果重载,可能会出现混淆;“sizeof”运算符不能重载是因为内部许多指针都依赖它;“.*”运算符引用指向类成员的指针。 本教…

    2025年3月3日
    200
  • c语言如何用scanf输入字符串

    在C语言中,可以使用“scanf(“格式控制字符串”,变量内存地址)”语句输入字符串。scanf()函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。 本教程操…

    2025年3月3日
    200
  • c++用什么软件编程

    c++kquote>c++编程软件:1、visual studio,一个基本完整的开发工具集;2、code blocks,一个开源的ide,可跨平台;3、clion,专业的C++编程软件;4、dev c++,小巧的开源C++集成开发环…

    2025年3月3日
    200
  • c语言开根号代码是什么

    在C语言中,开根号的代码是“sqrt(浮点值x)”;例如“sqrt(4.0)”,对4进行平方根运算,结果为2。sqrt()是c语言内置的开根号运算函数,其运算结果是函数变量的算术平方根;该函数既不能运算负数值,也不能输出虚数结果。 本教程操…

    2025年3月3日
    200

发表回复

登录后才能评论