C/C++数组的初始化因为方法太多,而且规则也比较混乱,所以在使用的时候经常出现数组初始化就不对的问题,这里把关于数组的初始化存在需要谨慎的问题进行一个简单的总结,有遗漏的望同学们一起指出补充。

一维数组

静态分配

1.

int a[3] = {0, 1, 2}; // 正确
int a[3]={0,1,2,3}; //错误,初始化值个数大于数组大小
int a[3]={0,,2}; //错误,初始化值被跳过
int a[3]={0,1,}; //错误,初始化值被跳过(即使是最后一个元素,添加逗号也被认为是跳过)
int a[3]={0}; //正确,省略初始化最后一个元素,最后省略的元素初始化为0
int a[n]={0}; // 注意n必须为const类型,否则错误

2.

char a[10] = "abceddddd";   //用一个字符串常量去初始化字符数组.注意: a[10]='\0'

3.

char a[10] = "abcd";    //当字符常量长度不够时 数组的其他元素初始化为  '\0'

4.

int v1[] ={1,2,3,4};
char v2[]={'a','b','c',0}; //当数组定义时没有指定大小,当初始化采用列表初始化了,那么数组的大小由初始化时列表元素个数决定。所以v1和v2分别为 int[4] 和char[4]类型。

动态分配

1.

int* a = new int[10];   //new 分配了一个大小为10的未初始化的int数组,并返回指向该数组第一个元素的指针,此指针初始化了指针a
a = {4, -3, 5, -2, -1, 2, 6, -2, 3}; // 错误,注意这种用大括号的数组赋值只能用在声明时,此处已经不是声明,所以出错。

那么此时对a的赋值只能通过

1) int b[10]={...}; a = b;
2) a[i]=2;
3) memset(a, 1, sizeof(a));

2.

int *a = new int[10] ();  // 每个元素初始化为0,括号内不能写其他值,只能初始化为0

3.

int* a = new int[n];// 注意n必须为const

4. 类中的初始化

class Something {
private:int myArray[10];public:Something()
: myArray { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } //使用大括号初始化必须在初始化列表中进行初始化,在构造函数内部初始化需使用memset之类的方法。
{
}int ShowThingy(int what) {return myArray[what];
}
}

二维数组

静态分配

静态分配和一维的区别不大
1.

int value[9][9]; // value[i][j]的值不定,没有初始化
2.

int value[9][9] = {{1,1},{2}}; //value[0][0,1]和value[1][0]的值初始化,其他初始化为0

动态分配

1.

int (*value)[n] = new int[m][n];
delete []value; // n必须为常量,调用直观。未初始化

2.

int** value = new int* [m];
for(i) value[i] = new int[n];
for(i) delete []value[i];
delete []value; // 多次析构,存储麻烦,未初始化

C/C++ 数组的初始化相关推荐

  1. (二十一)数组的初始化

    class Demo3 {public static void main(String[] args) {//数组的初始化int[] a = new int[] {12,13,14,15};int[] ...

  2. 对象数组的初始化_JAVA中数组是什么?

    Java中数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特点: ...

  3. java一维数组初始化_Java一维数组,初始化一维数组详解

    Java语言当中数组必须先初始化,之后才能够使用,那么下面的文章就来给大家讲一下初始化一维数组方面的知识. 所谓的初始化指的就是为数组的数组元素分配内存空间,并且为每一个个数组元素赋初始值. 那么可不 ...

  4. qt 一定要指定大小吗 数组_Qt中数组的初始化 | 学步园

    如果Qt中某类中有数组成员,对数组的初始化必须放在构造函数而非类的声明中,同时类的声明中必须指定数组的大小. 如: class SerialPort : public QWidget { Q_OBJE ...

  5. 数组, 数组的初始化

    2019独角兽企业重金招聘Python工程师标准>>> 一,数组的定义 存储同一种数据类型的多个元素的容器 例如 : 声名一个存储三个int类型数值的数组   int[] arr = ...

  6. 怎么UI数组惊醒初始化 c语言,C语言教案7-数组.ppt

    C语言教案7-数组 C 语 言 程 序 设 计 第 7 章 数组 数组 一维数组的定义 一维数组元素的引用 一维数组的初始化 例7.3:求一组数据的最大值最小值 例7.4:求一组员工的平均工资 例7. ...

  7. C++类的Const数组的初始化

    C++类的Const数组的初始化 要实现的功能如下 完整源代码实现如下 要实现的功能如下 //以下类数据成员 const int a[3]//怎么初始化? class A {public: A(){} ...

  8. Java学习笔记#数组的初始化方式

    数组的初始化方式一共有三种:静态初始化,动态初始化,默认初始化. 1 package cn.sxz.arrays; 2 /** 3 * 测试数组的三种初始化方式 4 * @author xingzhu ...

  9. 数组动态初始化【应用】

    什么是动态初始化 ​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 动态初始化格式 数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[5] ...

  10. python 初始化数组 numpy,Python Numpy 数组的初始化和基本操作

    Python 是一种高级的,动态的,多泛型的编程语言.Python代码很多时候看起来就像是伪代码一样,因此你可以使用很少的几行可读性很高的代码来实现一个非常强大的想法. 一.基础: Numpy的主要数 ...

最新文章

  1. python内置作用域_python内置金融数据Python 五点搞定作用域
  2. c语言编程微信公众号图片直播,如何以图片的形式在微信公众号文章中添加小程序...
  3. wordpress phpmyadmin_西部数码使用指南:虚拟主机WordPress部署SSL注意事项
  4. php fuzzy,模糊C均值聚类算法(Fuzzy C-means)
  5. python+selenium h5QQ空间自动点赞器
  6. python连接sql server
  7. 引路蜂地图API:Gis.Raster 包定义
  8. element UI日历组件自定义操作设置农历、阳历、节日展示、单日操作
  9. 标题:《东邪西毒》台词全本(国语版) (转)
  10. python学习(2)
  11. EasyExcel导出合并单元格
  12. Wamp下载及安装问题
  13. 图像处理:Yxy、XYZ颜色空间介绍及RGB转换公式
  14. python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)
  15. [160CRACKME]Chafe.2
  16. endnote添加引文格式
  17. 2022河南联赛第(二)场:河南理工大学 ---复盘
  18. 第一周python学习
  19. 七款最流行的PHP本地服务器
  20. Roadblock for Mac(Safari广告内容拦截软件)

热门文章

  1. 基于RNN的短期股票预测
  2. 微服务高性能高可用架构设计
  3. 力扣解题思路:位运算系列
  4. eas报错日记_EAS新建数据中心报错
  5. NOI 2005 聪聪可可
  6. 【ros学习】14.urdf、xacro机器人建模与rviz、gazebo仿真详解
  7. sparksql insertinto 源码解析
  8. 0-1背包问题的一维数组优化解析
  9. 云计算进入深水区, MSP才是政企用好云的生力军
  10. 解决复制项目或者svn下载项目后项目名称不改变的问题:org.eclipse.wst.common.component