C++数组入门:全面解析基础概念

发表时间: 2024-03-31 14:32

一、数组的概念

在C++中,数组是一种用于存储相同类型数据的集合的数据结构。数组的每个元素都可以通过其索引(或称为下标)来访问。数组的大小在定义时确定,并且在整个生命周期中保持不变。数组在内存中占据连续的存储空间,这使得数组的访问速度非常快。


二、数组的声明与初始化

在C++中声明数组时,需要指定数组的类型和大小。数组的大小是一个常量表达式,它指定了数组中元素的数量。例如,下面的代码声明了一个包含10个整数的数组:

int arr[10]; // 声明一个包含10个整数的数组

数组可以在声明时进行初始化。初始化时,可以提供一个初始化列表,其中包含要存储在数组中的值。例如:

int arr[5] = {1, 2, 3, 4, 5}; // 初始化一个包含5个整数的数组

如果初始化列表中的元素数量少于数组的大小,则剩余的元素将被初始化为0(对于基本类型的数组)。如果初始化列表中的元素数量多于数组的大小,则会导致编译错误。

三、数组的访问与修改

数组的元素可以通过其索引来访问和修改。在C++中,数组的索引从0开始。例如,下面的代码访问并修改数组中的元素:

int arr[5] = {1, 2, 3, 4, 5};int firstElement = arr[0]; // 访问数组的第一个元素,值为1arr[2] = 10; // 修改数组的第三个元素为10

需要注意的是,尝试访问数组范围之外的索引会导致未定义的行为。因此,在编写代码时应确保索引值在有效范围内。

四、多维数组

C++支持多维数组,即数组的数组。多维数组在内存中仍然以连续的方式存储,但需要通过多个索引来访问其元素。例如,下面的代码声明并初始化一个2x3的二维数组:

int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 声明并初始化一个2x3的二维数组

访问二维数组中的元素需要使用两个索引,如matrix[0][1]访问第一行第二列的元素(值为2)。

五、数组与指针

在C++中,数组名实际上是一个指向数组第一个元素的指针。因此,可以使用指针来访问和修改数组中的元素。例如:

int arr[5] = {1, 2, 3, 4, 5};int *p = arr; // p指向数组的第一个元素int firstElement = *p; // 访问数组的第一个元素,值为1*(p + 2) = 10; // 修改数组的第三个元素为10

需要注意的是,尽管数组名可以看作是指针,但它并不总是可以像指针那样使用。例如,数组名不能用于赋值操作(如arr = p;是错误的)。此外,当数组作为函数参数传递时,它实际上被转换为指向其第一个元素的指针。