栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 数组初始化 多维数组 指针数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 数组初始化 多维数组 指针数组

摘要: 不同生存期数组的初始化、多维数组元素在内存上的排序、多维数组的下标访问、指针数组与二维数组在内存存储结构和下标访问上的区别,。


1.数组初始化
  • 静态生存期的数组在程序运行前分配空间并默认初始化。
  • 动态生存期的数组动态分配空间并动态初始化。

以下为动态生存期的数组初始化说明:

1.1声明时初始化:
  • 完全初始化:int a[3]={0,1,2};,数组变量a指向的数组为[0,1,2]。
  • 部分初始化:int a[3]={3};,数组变量a指向的数组为[3,0,0]。(其他元素以默认值、默认构造函数初始化)
  • 默认初始化:int a[3]={};,数组变量a指向的数组为[0,0,0]。(所有元素以默认值、默认构造函数初始化)
1.2声明后初始化:

(声明后只能逐个初始化,未初始化的元素为随机值)

int a[3];
a[0]=0;
  • 声明后数组指向的内存空间:(debug模式下cc表示为未初始化空间,在非debug模式下会表示为随机值)
  • 首位元素初始化后数组指向的内存空间:
1.3动态分配时初始化:
  • 动态分配一个数组空间时,如果没有初始化,元素会是随机值。
  • 动态分配时初始化的案例:int* a=new int[3]{1,2,3};

2.多维数组元素在内存上的排序
  • 初始化一个多维数组:int a[3][3]={1,2,3,4,5,6,7,8,9};
  • 其中:a[0][0]=1,a[0][1]=2,a[0][2]=3,a[1][0]=4,a[1][1]=5,a[1][2]=6…
  • 多维数组指向的内存空间:

3.多维数组的下标访问
  • 初始化一个多维数组:int a[3][3]={1,2,3,4,5,6,7,8,9};
  • 不同数组下标访问返回的结果:(只有访问到最后一维下标才会返回元素对象,前面的维下标访问返回的只是数组首地址运算得到的地址)
  • 解释:a=0x12ffa00,a[0]=0x12ffa00,a[0][0]=1,地址后面大括号表示的是地址指向的内容。

4.指针数组与二维数组的区别
  • 初始化一个二维数组:
  int a[3][3]={1,2,3,4,5,6,7,8,9};
  • 初始化一个指针数组:
   int* b[3];
   b[0] = new int[3]{ 1,2,3 };  // 堆对象的分配时初始化的方式
   b[1] = new int[3]{ 4,5,6 };
   b[2] = new int[3]{ 7,8,9 };
4.1内存空间结构的区别
  • 二维数组指向的内存空间:
  • 指针数组指向的内存空间:(数组里面的指针指向另一个数组)
  • 指针数组第一个指针元素指向数组的内存空间:
4.2下标访问的区别
  • 不同数组下标访问返回的结果:
  • 两个数组通过下标访问的结果相同:a[i][j]=b[i][j]。
  • 对于a[0][0]=b[0][0]=1,a[0]的值是通过二维数组a的首地址计算得到的,b[0]的值是通过读取数组b的第1个元素得到的。

END

2021.10.15 第一次编辑

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号