在C++中,静态数组指的是在栈上分配内存、大小在编译期就确定的数组。理解它的声明和初始化方式,是学习C++基础语法的重要一步。下面介绍常用的静态数组定义与初始化方法。

一、静态数组的基本声明
静态数组的声明需要指定元素类型和数组大小,大小必须是常量表达式。常见形式如下:
#include <iostream>
using namespace std;
int main() {
int arr[5]; // 声明一个包含5个int的静态数组,未初始化
return 0;
}
上面代码中 arr[5] 表示数组有5个元素,下标从0到4。如果声明时不初始化,元素值是未定义的。
二、声明时完全初始化
可以在声明数组的同时用花括号给出所有元素的初始值:
#include <iostream>
using namespace std;
int main() {
int nums[5] = {1, 2, 3, 4, 5}; // 完全初始化
for (int i = 0; i < 5; i++) {
cout << nums[i] << " ";
}
return 0;
}
三、部分初始化与省略大小
如果初始化列表中的值少于数组大小,剩余元素会自动初始化为0:
#include <iostream>
using namespace std;
int main() {
int vals[5] = {10, 20}; // vals[0]=10, vals[1]=20, 其余为0
int autoSize[] = {1, 3, 5}; // 编译器推断大小为3
return 0;
}
注意,若省略数组大小,编译器会根据初始化元素个数确定长度,这种方式更灵活且不易出错。
四、字符数组的特殊初始化
字符数组可以用字符串字面量初始化,但会多包含一个结束符 ' ':
#include <iostream>
using namespace std;
int main() {
char str[6] = "hello"; // 实际存 'h','e','l','l','o',' '
cout << str << endl;
return 0;
}
如果写成 char str[] = "hi";,数组大小会被推断为3,包含结尾的 ' '。
五、注意事项
- 静态数组大小必须是编译期常量,不能用变量指定长度。
- 访问下标不要越界,否则会破坏栈内存导致程序崩溃。
- 未初始化的静态数组元素值不确定,使用前应赋值。
静态数组适合大小已知且较小的场景,若需要运行时确定长度,应考虑使用 std::vector。