静态数组在c++++中通过编译时常量指定大小,可在声明时用初始化列表、花括号语法或自动推导大小的方式进行初始化,未初始化的局部数组值为未定义,全局或静态数组自动初始化为0,多维数组按行优先存储,现代c++推荐使用std::array替代原生数组以提升安全性,但原生静态数组仍在性能敏感场景广泛使用。

在C++中,数组是一种用于存储相同类型数据的连续内存块。静态数组是在编译时确定大小、在程序运行期间大小不变的数组。它们通常在栈上分配内存(除非是全局或静态存储期的数组)。下面详细介绍静态数组的声明和初始化方法。
声明一个静态数组的基本语法如下:
类型 数组名[元素个数];
例如:
立即学习“C++免费学习笔记(深入)”;
int numbers[10]; // 声明一个包含10个整数的数组 double scores[5]; // 声明一个包含5个双精度浮点数的数组 char name[20]; // 声明一个包含20个字符的字符数组
注意:数组的大小必须是编译时常量,不能是变量(C99中的变长数组在C++中不被支持)。
静态数组可以在声明时进行初始化,有多种方式:
int arr[5] = {1, 2, 3, 4, 5};这会将数组的五个元素分别初始化为1到5。
int arr[5] = {1, 2};这种情况下,前两个元素被初始化为1和2,其余元素自动初始化为0。
int arr[5] = {0}; // 所有元素都为0或者使用统一初始化语法(C++11起):
int arr[5] = {}; // 所有元素初始化为0int arr[5] {1, 2, 3, 4, 5}; // 使用花括号,推荐现代C++风格如果元素数量少于数组大小,剩余元素仍会被初始化为0。
当初始化列表存在时,可以省略数组大小,编译器会根据初始化元素个数自动推断:
int arr[] = {1, 2, 3, 4, 5}; // 等价于 int arr[5]这种方式非常方便,避免手动计算元素个数。
越界访问:C++不检查数组边界,访问超出范围的元素会导致未定义行为。
未初始化的局部数组:如果未显式初始化,局部数组的值是未定义的(即垃圾值),而全局或静态数组会自动初始化为0。
字符数组的特殊初始化:
char str[10] = "Hello"; // 自动在末尾添加 '\0',其余位置补0
也可以写成:
char str[] = "Hello"; // 编译器自动推导大小为6(包括'\0')
二维数组的声明和初始化:
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};也可以部分初始化:
int matrix[3][3] = {0}; // 所有元素初始化为0如果不显式使用嵌套花括号,也可以:
int matrix[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 按行优先顺序填充静态数组的定义和初始化在C++中非常基础但重要。关键点包括:
现代C++更推荐使用
std::array
基本上就这些,掌握这些初始化方式足以应对大多数场景。
以上就是C++数组如何声明和初始化 静态数组定义与初始化方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号