c++数组

avatar
作者
筋斗云
阅读量:0

数组:相同数据类型的元素组成的集合。
如果说变量是一个盒子,那么数组就是一堆盒子为了区分这些盒子,每个盒子都会依次进行编号。
一维数组:单个变量类似于一个空间,一维数组是指在一排,有多个连续的空间。
如果说一维数组数组是一排盒子,那么二维数组就是多排盒子(多个一维数组)。
二维数组:类似于数学坐标系,拥有横纵坐标和纵坐标,用坐标去访问位置。
选择排序:通过遍历数组,选出该数组中较大的或者较小的,放在数组的起始位置,当遍历完整个数组时排序完成。
选择排序的核心就是:多趟选择
若以升序(从小到大)排序为例,假若有N个数。
第一趟遍历的目的是找到整个序列中最小的值,找到之后将其与第一个数(动图中的第0个位置)交换,这样一来,在整个数组中第一个数就是最小的。
第二趟遍历:目的是找到整个序列中次小的值,也就是(动图中第0个位置上的数不在变动,在剩下的 N-1 个数中选出最小的),找到之后将其与剩下的 N-1 个数的第一个数(动图中的第1个位置)交换,这样一来,在整个数组中第一个数(第0位置)就是最小的,第二个数(第1位置)就是次小的。
当经过 N-1 趟的遍历交换之后,该序列就实现的从小到大的排列了。

Ah, C++数组,编程世界中的重要组成部分之一。无论你是在学习C++编程的新手,还是已经具有丰富经验的开发者,与数组打交道都是不可避免的。今天,我们就来聊聊C++中的数组,深入了解它们的一些基础概念、操作方式以及常见的陷阱。

### 什么是数组?

在C++中,数组是一种可以存储**固定大小**的、**相同类型**元素的容器。你可以把它当作一排紧挨着的储物格,每个格子都可以存放一个相同类型的数据。不论是整型、浮点型还是字符型,数组都可以帮你高效地组织和管理这些数据。

### 数组的声明与初始化

#### 声明:

在C++中,声明一个数组非常简单。通常你只需要指定数组的类型、名称和大小。例如:

```cpp
int myArray[5]; // 声明一个包含5个整数元素的数组
```

上面的代码声明了一个名为 `myArray` 的整数数组,包含5个元素。此时,数组中的元素未被初始化,它们的值是未定义的。

#### 初始化:

我们可以在声明数组的同时对其进行初始化:

```cpp
int myArray[5] = {1, 2, 3, 4, 5}; // 声明并初始化一个包含5个整数元素的数组
```

如果你没有为每个元素提供初始值,未被初始化的元素会被设置为零:

```cpp
int myArray[5] = {1, 2}; // 其余三个元素将被默认初始化为0
```

### 访问和修改数组元素

数组中的元素可以通过索引来访问和修改,索引从0开始。例如:

```cpp
myArray[0] = 10;      // 修改第一个元素的值
int value = myArray[2]; // 访问第三个元素的值
```

请特别注意,访问数组时,索引超出范围(即“数组越界”)会导致未定义行为,可能会引发程序崩溃或其他意外情况。因此操作数组时要格外小心。

### 多维数组

C++还支持多维数组,即数组的数组。例如,声明一个二维数组(即矩阵)的方法如下:

```cpp
int matrix[3][4]; // 声明一个3行4列的整数矩阵
```

对二维数组进行初始化和访问的示例:

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

int value = matrix[1][2]; // 访问第二行第三列的元素,值为7
```

### 常见陷阱和注意事项

1. **数组越界**:这是初学者常犯的错误,访问或修改了超出边界的数组元素。例如:

```cpp
int myArray[5];
myArray[5] = 10; // 错误!有效索引应为0到4
```

2. **未初始化的数组元素**:声明数组时,未显式初始化的元素会包含垃圾值,可能导致不可预测的行为。

3. **使用标准库容器**:尽管C++的内建数组非常高效且易于理解,但在实际开发中更推荐使用标准库提供的容器如 `std::vector`,因为它们更加安全、灵活,并且提供了许多有用的功能。

### 结尾

数组是C++中非常基础且重要的部分,深入理解数组的操作和注意事项对于写出高效、安全的代码非常有帮助。希望这篇文章能够帮你更好地理解和使用C++中的数组。无论是简单地存储一组数值,还是构建更复杂的数据结构,数组在C++编程中都有着不可或缺的地位。Happy coding!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!