1 C++数组声明

C++中的数组是一种数据格式,可以存储多个同类型的值。

通常声明数组的通用格式如下:

typeName arrayName[arraySize]

其中typeName为数据类型,arrayName为数组名称,arraySize为数组大小。

比如:

float persons[10]

表示一个数据类型为float,数组大小为10,数组名为persons的数组。

2 C++数组初始化规则

在C++中初始化数组需遵循一些规则。

1. 只有在定义数组时才能初始化数组,且不能将一个数组赋值给另一个数组

什么是只能在定义数组时才能初始化数组呢?比如

int persons[4]; // 默认
int persons[4] = {1,2,3,4}; // 初始化列表

如果换一种形式,

int persons[4];
persons = {1,2,3,4}

这种是不允许的。

同样的,将一个数组赋值给另一个数组这种方式也是不允许的,比如

int persons[4] = {1,2,3,4};
int persons_copy[4];
persons_copy = persons;

2 初始化数组时,提供的初始化的值可以少于或者等于数组的大小

比如

int persons[4] = {1,2};

这种情况下只会对persons数组前两个元素进行初始化,剩余元素默认初始化为0。

如果提供的初始化的值可以大于数组的大小,这种也是不允许的,比如

int persons[4] = { 1,2,3,4,5 };

3 C++数组初始化方法

3.1 逐一元素赋值

#include <iostream>

int main()
{
    int persons[4];

    persons[0] = 1;
    persons[1] = 2;
    persons[2] = 3;
    persons[3] = 4;

    return 0;
}

这种方法也是最笨的方法。

3.2 初始化列表

#include <iostream>

int main()
{
    int persons[4] = {1,2,3,4};

    return 0;
}

当然在C++中我们也可以省略=号,比如

#include <iostream>

int main()
{
    int persons[4] {1,2,3,4};

    return 0;
}

我们可以不在{}中填入值,这时候数组的值初始化为0,比如

#include <iostream>

int main()
{
    int persons[4] {};

    return 0;
}

我们也可以不显式指定数组大小,由初始化列表的值的个数进行推断,比如

#include <iostream>

int main()
{
    int persons[] = {1,2,3,4};

    return 0;
}

3.3 使用memset初始化数组为同一值

比如将数组全部初始化为0

#include <iostream>

int main()
{
    int persons[4];
    memset(persons, 0, 4);

    return 0;
}