0 Xcode 10.1,编译器clang GNU14++

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/C++数组初始化相关推荐

  1. C/C++数组初始化的一些误区

    以前我这样初始化一个数组,并自我感觉良好: int a[5] = { 0 }; // 全部初始化为0 这种简单的写法让我非常爽,于是我又想把数组全部初始化为1: int a[5] = { 1 }; / ...

  2. 【C】数组数组初始化总结

    C数组初始化总结 发现一个新方法,可以分段初始化数组 eg:int arrayC[MAX_LEN] = {[1 - 5]=9, [6 - 9] = 8}; 代码如下 #include <stdi ...

  3. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  4. C语言中字符数组初始化的几种方法

    欢迎关注我的微信公众号:CurryCoder的程序人生 1.C语言中的字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. 1.1 直接 ...

  5. 【C 语言】数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )

    文章目录 一.数组本质 二.数组长度定义 三.数组初始化 1.编译时初始化 2.显式初始化 ( 重置内存 ) 一.数组本质 数组本质 : 类型角度 : 从 数组元素 类型角度分析 , 数组是 相同类型 ...

  6. golang二维数组初始化

    golang二维数组初始化来看一下,有点特别 func main() {x := 2y := 4table := make([][]int, x)for i := range table {table ...

  7. 二维数组初始化的形式有?

    二维数组初始化的形式有? 数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 }: 在{ }中给出各数组元素的初值,各初值之间用逗号分开.把{ }中的初值依次赋给各数组元素. 有如下几 ...

  8. c的关于数组初始化 和 memset用法

    今天为了彻底搞定一个关于c中数组初始化和声明不同情况下,比如只声明一个数组char str[20];那么这str里面是什么内容呢?我用vc6++,debug下看到都是-56饿asc码,后来请教了一个华 ...

  9. memset 数组初始化

    void *memset(void *s, int ch, size_t n) 1.功能是: 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值,  第一个值为指定的内存地址, ...

  10. c# 怎样从bitmap初始化image类_C#二维数组初始化概括(新手篇)

    群友反馈的一个问题: 运行报错: 这个主要是数组定义的有问题,二维数组初始化:如下这样 string[,] aaa = new string[10, 10]; 其次得确保data在截取Substrin ...

最新文章

  1. VS中快速生成dll和lib方法
  2. 除了清空购物车,阿里年会的技术也够霸气!
  3. 文献记录(part3)--Clusterpath An Algorithm for Clustering using Convex Fusion Penalties
  4. python奖励多少钱_关于python的问题,好的高奖励!
  5. oracle 数据库查询多条数据的一列值
  6. 前端学习(892):bom概述
  7. 获取php服务器ip地址,PHP获取客户端和服务器IP地址
  8. 找出数组中只出现1次的两个元素
  9. AcWing 4240. 青蛙(最短路 or 最小生成树)
  10. dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】
  11. MySQL数据库企业级应用实践(主从复制)
  12. (转) 数字加密货币全球资源汇总
  13. 微信小程序开发-新闻简讯demo
  14. 使用SSH连接linux服务器重启Tomcat服务
  15. BOM有效日期的设置
  16. 800家电子元器件供应商及代理商
  17. 快恢复二极管工作原理及使用
  18. 移动端touch触屏滑动事件、滑动触屏事件监听!
  19. android+微信支付
  20. 使用HTML编写浣溪沙,《浣溪沙》版本+原文+拼音版+翻译+赏析+作者

热门文章

  1. 微信“防拉黑”功能上线太实用了
  2. sonar问题:Font declarations should contain at least one generic font family
  3. 学习LSSVM以及区别LSSVM和SVM看的几篇博文
  4. python爬虫爬取网页信息
  5. Multi-Label Image Classification(多标签图像分类)
  6. 岁月温柔-6 出院后忐忑不安的妈妈
  7. 程序员的情感修养 —— 专访“非诚勿扰”牵手成功男嘉宾程序员石川
  8. 仿八大行星绕太阳3D旋转效果
  9. Linux ar命令(更改静态库相关属性信息)
  10. AUTOSAR的一般开发流程(单个ECU)