c++数组
数组
- 概念
- 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。
- 数组属于构造类型。
- C++中数组没有长度变量(length)
一维数组的声明和引用
- 声明:
类型说明符 数组名[常量表达式];
> 例如:
int a[10];
- 使用
- 先声明,后使用
- 只能逐个引用数组元素,而不能一次引用整个数组
a[0]=a[5]+a[7]+a[2*3];
- 一维数组的存储顺序
数组元素在内存中顺序存放, 它们的地址是连续的。 - 一维数组的初始化
- 在声明数组时对数组元素赋初值
int a[10]={0,1,2,3,4,5,6,7,8,9};
- 可以只给一部分元素赋初值
int a[10]={0,1,2,3,4};
- 对全部数组元素赋初值时,可以不指定数组长度。
int a[]={0,1,2,3,4,5,6,7,8,9};
二维数组的声明及引用
-
二维数组的声明
数据类型 标识符[常量表达式1][ 常量表达式2]int a[3][4];
-
二维数组的存储
按行存放,上例中数组a的存储顺序为: -
二维数组的初始化
- 将所有数据写在一个{}内,按顺序赋初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 分行给二维数组赋初值
int a[3][4]={{1,2,3,4},{5,6,7,8,},{9,10,11,12} };
- 对部分元素赋初值
int a[3][4]={{1},{0,8},{0,1,2}};
数组作为函数参数
- 数组元素作实参,与单个变量一样。
- 数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组。、
对象数组
- 声明:
类名 数组名[元素个数]; - 访问方法:
通过下标访问 数组名[下标].成员名 - 初始化
- 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象
- 通过初始化列表赋值。
例:Point A[2]={Point(1,2),Point(3,4)};
- 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)
- 数组元素所属类的构造函数
- 不声明构造函数,则采用默认构造函数。
- 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。
- 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。
- 当数组中每一个对象被删除时,系统都要调用一次析构函数
关于内存地址
- 内存空间的访问方式
- 通过变量名访问
- 通过地址访问
- 地址运算符: &
例:
int var;
则&var 表示变量var在内存中的起始地址
int *p=&var;