- C++
能用变量定义数组吗?
- @ 2025-8-25 14:19:49
在C++标准中,这句话不完全正确,需要分情况讨论:
-
在C++98/03标准中:
定义数组时,方括号内的大小必须是常量表达式(如字面量5、const修饰的常量等),不能直接使用变量。例如:int n = 5; int arr[n]; // 错误(C++98/03不允许) -
在C++11及以上标准中:
依然不允许直接用变量定义数组大小,但可以通过动态内存分配(如new[])或使用标准库容器(如std::vector)实现类似效果。例如:int n = 5; int* arr = new int[n]; // 正确(动态分配,需手动释放) std::vector<int> vec(n); // 更推荐,自动管理内存 -
特殊情况:
某些编译器(如GCC)支持扩展语法,允许用变量作为数组大小(称为“变长数组”VLA),但这并非C++标准的一部分,可移植性差,不建议使用。
总结:在标准C++中,数组定义时的大小不能是变量,需通过动态分配或容器实现动态大小的需求。
0 条评论
目前还没有评论...