c++数组

数组

  • 概念
    1. 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。
    2. 数组属于构造类型。
    3. C++中数组没有长度变量(length)
一维数组的声明和引用
  • 声明:
    类型说明符 数组名[常量表达式];
> 例如:
int a[10];
  • 使用
  1. 先声明,后使用
  2. 只能逐个引用数组元素,而不能一次引用整个数组

a[0]=a[5]+a[7]+a[2*3];

  • 一维数组的存储顺序
    数组元素在内存中顺序存放, 它们的地址是连续的。
    c++数组
  • 一维数组的初始化
  1. 在声明数组时对数组元素赋初值

    int a[10]={0,1,2,3,4,5,6,7,8,9};

  2. 可以只给一部分元素赋初值

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

  3. 对全部数组元素赋初值时,可以不指定数组长度。

    int a[]={0,1,2,3,4,5,6,7,8,9};

二维数组的声明及引用
  • 二维数组的声明
    数据类型 标识符[常量表达式1][ 常量表达式2]

    int a[3][4];
    c++数组

  • 二维数组的存储
    按行存放,上例中数组a的存储顺序为:
    c++数组

  • 二维数组的初始化

  1. 将所有数据写在一个{}内,按顺序赋初值

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

  2. 分行给二维数组赋初值

    int a[3][4]={{1,2,3,4},{5,6,7,8,},{9,10,11,12} };

  3. 对部分元素赋初值

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

数组作为函数参数
  1. 数组元素作实参,与单个变量一样。
  2. 数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组。、
    c++数组
对象数组
  • 声明:
    类名 数组名[元素个数];
  • 访问方法:
    通过下标访问 数组名[下标].成员名
  • 初始化
  1. 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象
  2. 通过初始化列表赋值。

例:Point A[2]={Point(1,2),Point(3,4)};

  1. 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)
  • 数组元素所属类的构造函数
  1. 不声明构造函数,则采用默认构造函数。
  2. 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。
  3. 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。
  4. 当数组中每一个对象被删除时,系统都要调用一次析构函数

关于内存地址

  • 内存空间的访问方式
    1. 通过变量名访问
    2. 通过地址访问
  • 地址运算符: &

    例:
    int var;
    则&var 表示变量var在内存中的起始地址
    int *p=&var;