C++ 一维数组
外观
C++一维数组是编程中最基础的数据结构之一,用于存储相同类型的多个元素。它提供了一种高效的方式来管理连续的内存空间,并通过索引访问其中的元素。本文将详细介绍一维数组的定义、初始化、访问方式以及常见操作。
定义与语法[编辑 | 编辑源代码]
在C++中,一维数组的定义语法如下:
数据类型 数组名[数组大小];
其中:
- 数据类型:数组中元素的类型(如`int`、`double`、`char`等)。
- 数组名:数组的标识符,遵循变量命名规则。
- 数组大小:数组能存储的元素数量,必须是常量表达式。
例如,定义一个包含5个整数的数组:
int numbers[5];
初始化[编辑 | 编辑源代码]
数组可以在定义时初始化,也可以在后续赋值。以下是几种初始化方式:
静态初始化[编辑 | 编辑源代码]
直接在大括号中提供初始值:
int numbers[5] = {1, 2, 3, 4, 5}; // 完全初始化
int partial[5] = {1, 2}; // 部分初始化,剩余元素为0
int autoSize[] = {1, 2, 3}; // 自动推断大小为3
动态初始化[编辑 | 编辑源代码]
通过循环或逐个赋值:
int numbers[5];
for (int i = 0; i < 5; i++) {
numbers[i] = i + 1;
}
访问数组元素[编辑 | 编辑源代码]
数组元素通过索引访问,索引从0开始。例如:
int numbers[5] = {10, 20, 30, 40, 50};
cout << numbers[0]; // 输出10
numbers[2] = 100; // 修改第三个元素为100
边界检查[编辑 | 编辑源代码]
C++不强制检查数组越界,访问非法索引可能导致未定义行为。例如:
int numbers[5] = {1, 2, 3, 4, 5};
cout << numbers[5]; // 越界访问,行为未定义
内存布局[编辑 | 编辑源代码]
一维数组在内存中是连续存储的。例如,`int arr[3] = {1, 2, 3};`的内存布局如下:
常见操作[编辑 | 编辑源代码]
遍历数组[编辑 | 编辑源代码]
使用循环遍历数组是常见操作:
int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << numbers[i] << " ";
}
// 输出:1 2 3 4 5
计算数组长度[编辑 | 编辑源代码]
可以通过`sizeof`运算符计算数组长度:
int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);
cout << length; // 输出5
实际应用案例[编辑 | 编辑源代码]
案例1:统计学生成绩[编辑 | 编辑源代码]
以下程序计算学生的平均成绩:
#include <iostream>
using namespace std;
int main() {
const int SIZE = 5;
double grades[SIZE] = {85.5, 90.0, 78.5, 92.5, 88.0};
double sum = 0;
for (int i = 0; i < SIZE; i++) {
sum += grades[i];
}
double average = sum / SIZE;
cout << "平均成绩: " << average << endl;
return 0;
}
输出:
平均成绩: 86.9
案例2:查找最大值[编辑 | 编辑源代码]
以下程序查找数组中的最大值:
#include <iostream>
using namespace std;
int main() {
int numbers[] = {12, 45, 67, 23, 9};
int max = numbers[0];
for (int i = 1; i < 5; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
cout << "最大值: " << max << endl;
return 0;
}
输出:
最大值: 67
注意事项[编辑 | 编辑源代码]
- 数组大小必须是编译时常量(C++11后可用`constexpr`)。
- 数组名是首元素的地址,例如`numbers`等价于`&numbers[0]`。
- 数组不能直接赋值或比较,需逐个元素操作。
数学表示[编辑 | 编辑源代码]
数组可以表示为: 其中表示第i个元素,为数组长度。
总结[编辑 | 编辑源代码]
一维数组是C++中基础且重要的数据结构,适用于存储和操作大量同类型数据。掌握其定义、初始化和常见操作是进一步学习更复杂数据结构的基础。