1. C++数组基础概念与静态初始化
数组是C++中最基础也是最重要的数据结构之一,它能够存储固定大小的相同类型元素序列。想象一下数组就像一排整齐的邮箱,每个邮箱都有唯一的编号(索引),我们可以通过编号快速找到对应的邮箱。
静态数组在编译时就已经确定大小,它的声明语法很简单:
int scores[5]; // 声明一个包含5个整数的数组
静态初始化是在声明数组的同时赋予初始值,这是最高效的初始化方式之一。编译器会在程序加载时直接完成初始化,不需要运行时额外开销:
// 完全初始化
int primes[5] = {2, 3, 5, 7, 11};
// 部分初始化,未指定的元素会自动初始化为0
int numbers[10] = {1, 2, 3}; // 后面7个元素为0
静态初始化有几个实用技巧值得注意:
- 可以省略数组大小,编译器会自动计算元素个数
char vowels[] = {'a', 'e', 'i', 'o', 'u'}; // 自动确定大小为5
- 对于字符数组,可以使用字符串字面量初始化
char greeting[] = "Hello"; // 自动添加'\0'结束符
- C++11引入了统一的初始化语法
double temps[] {36.5, 37.2, 36.8}; // 省略等号
静态初始化的一个常见误区是初始化值过多导致编译错误:
int small[3] = {1, 2, 3, 4}; // 错误:初始值过多
2. 动态初始化与运行时赋值
动态初始化允许我们在程序运行时确定数组内容,这为处理用户输入或计算数据提供了灵活性。最常见的动态赋值方式是使用循环结构:
const int SIZE = 10;
int squares[SIZE];
for(int i = 0; i < SIZE; ++i) {
squares[i] = (i+1) * (i+1); // 计算1到10的平方
}
处理用户输入时,动态初始化特别有用:
double measurements[5];
cout << "Enter 5 measurements: ";
for(int i = 0; i < 5; ++i) {
cin >> measurements[i];
}
对于大型数组,使用标准库算法可以简化操作:
#include <algorithm>
#include <numeric>
int data[100];
std::iota(data, dat


1万+

被折叠的 条评论
为什么被折叠?



