☰分类导航

C++编程/数组和字符串
课程进度 35% · 第7/18章第7/18章 · 标签 1/4
— 1 —

数组基础


```cpp
// 数组声明和初始化
int numbers[5];
int scores[5] = {90, 85, 88, 92, 78};
int values[] = {1, 2, 3, 4, 5};

// 访问数组元素
cout << scores[0];    // 第一个元素
scores[1] = 95;       // 修改元素

// 使用循环遍历数组
for (int i = 0; i < 5; i++) {
    cout << scores[i] << " ";
}

// 范围for循环(C++11)
for (int score : scores) {
    cout << score << " ";
}

// 数组作为函数参数
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }
}

// 使用指针访问数组
int* ptr = scores;
cout << *ptr;        // 第一个元素
cout << *(ptr + 1);  // 第二个元素

// 计算数组大小
int size = sizeof(scores) / sizeof(scores[0]);
```
cpp
1
// 数组声明和初始化
2
int numbers[5];
3
int scores[5] = {90, 85, 88, 92, 78};
4
int values[] = {1, 2, 3, 4, 5};
5
 
6
// 访问数组元素
7
cout << scores[0]; // 第一个元素
8
scores[1] = 95; // 修改元素
9
 
10
// 使用循环遍历数组
11
for (int i = 0; i < 5; i++) {
12
cout << scores[i] << " ";
13
}
14
 
15
// 范围for循环(C++11)
16
for (int score : scores) {
17
cout << score << " ";
18
}
19
 
20
// 数组作为函数参数
21
void printArray(int arr[], int size) {
22
for (int i = 0; i < size; i++) {
23
cout << arr[i] << " ";
24
}
25
}
26
 
27
// 使用指针访问数组
28
int* ptr = scores;
29
cout << *ptr; // 第一个元素
30
cout << *(ptr + 1); // 第二个元素
31
 
32
// 计算数组大小
33
int size = sizeof(scores) / sizeof(scores[0]);

!数组下标从0开始,访问时注意边界检查。数组名实际上是指向第一个元素的指针

— 2 —

数组操作详解


```cpp
// 数组排序
#include <algorithm>
int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);

// 升序排序
sort(arr, arr + n);

// 降序排序
sort(arr, arr + n, greater<int>());

// 查找元素
int key = 8;
int* found = find(arr, arr + n, key);

// 数组拷贝
int dest[5];
copy(arr, arr + n, dest);

// 填充数组
fill(arr, arr + n, 0);  // 全部置零

// 反转数组
reverse(arr, arr + n);
```
cpp
1
// 数组排序
2
#include <algorithm>
3
int arr[] = {5, 2, 8, 1, 9};
4
int n = sizeof(arr) / sizeof(arr[0]);
5
 
6
// 升序排序
7
sort(arr, arr + n);
8
 
9
// 降序排序
10
sort(arr, arr + n, greater<int>());
11
 
12
// 查找元素
13
int key = 8;
14
int* found = find(arr, arr + n, key);
15
 
16
// 数组拷贝
17
int dest[5];
18
copy(arr, arr + n, dest);
19
 
20
// 填充数组
21
fill(arr, arr + n, 0); // 全部置零
22
 
23
// 反转数组
24
reverse(arr, arr + n);

数组使用要点:

  • 固定大小,编译时确定
  • 内存连续存储,访问速度快
  • 作为参数传递时退化为指针
  • 优先使用 vector 代替定长数组