C++学习日记(11)——数组

接下来的部分还是挺头疼的

复合类型有很多种

一次性放一篇文章里面可能不大现实

所以想了想还是拆开来讲

这节先讲数组


一年有十二个月

假设每个月你的月考成绩总和有一个数据

现在要用一个东西存储这十二个月的月考成绩

用什么比较好

那就要提到数组了

数组是一种数据格式

可以存储多个同类型的数值

每个值都存储在一个独立的数组元素中

计算机在内存中依次存储数组的各个元素

数组的声明

存储值的类型 数组名[数组大小]

例如short months[12];

数组的大小必须是整型常数或者const

也可以是一个常量表达式(里面所有的值在编译时都是已知的)

总之数组的长度不能是个变量

但是new运算符可以避开这个限制(后面的后面再说)


C++数组从0开始编号(C也一样)

也就是说长度为12的数组

里面元素的排列是从0开始到11结束的

(数据结构里物理和逻辑的区别)

0到11我们通常就叫下标

然后用带索引的方括号指定数组里的一个元素

例如months[0]

大部分IDE可能不会检查下标的错误

所以写的时候得长点心

我找了张图

大概就是这样的关系


数组的初始化

int a[3]={1,2,3};

数组和变量一样,都可以在声明的时候赋值

只需要用大括号括起来,元素间用逗号隔开就完事了

但是如果你没有初始化的话

元素的值会是以前放在内存单元

如果你对整个数组使用sizeof的话

得到的会是整个数组的字节数

但是对一个元素使用,就会得到元素的长度(字节)

有几条规则

只有定义数组的时候才能使用初始化

之后就不能再用了

  • int a[4]={1,2,3,4};正确
  • a[4]={1,2,3,4};NG

但是你可以使用下标单独给元素赋值

初始化的时候提供的值可以少于元素数目

例如int a[4]={1,2};

只赋值了前两个,后两个会自动赋值0

所以你想让数组全为0的话

只要int a[4]={0};就可以了

如果初始化数组的方括号内是空的

IDE就会根据初始化的元素数量来确定数组长度

例如int a[]={1,2,3,4};

IDE就会知道这个数组有四个元素


C11的初始化方法

可以省略等号

大括号内可以啥也不填,这样就会全初始化为0

禁止缩窄转换,例如long的数组里面存放short的数据


二维数组

声明跟一维数组是一样的

只不过多了一个中括号

你可以像这张图这么理解

一个二维数组就是几行几列的表格

初始化可以像这样

int a[2][2]={

{1,2}

{3,4}

}

也可以直接写成这样

int a[2][2]={1,2,3,4}

这两个是等价的

下标也是一样,访问元素是从00开始的

要注意

发表评论

您的电子邮箱地址不会被公开。