在C++标准中,这句话不完全正确,需要分情况讨论:

  1. 在C++98/03标准中
    定义数组时,方括号内的大小必须是常量表达式(如字面量5const修饰的常量等),不能直接使用变量。例如:

    int n = 5;
    int arr[n];  // 错误(C++98/03不允许)
    
  2. 在C++11及以上标准中
    依然不允许直接用变量定义数组大小,但可以通过动态内存分配(如new[])或使用标准库容器(如std::vector)实现类似效果。例如:

    int n = 5;
    int* arr = new int[n];  // 正确(动态分配,需手动释放)
    std::vector<int> vec(n);  // 更推荐,自动管理内存
    
  3. 特殊情况
    某些编译器(如GCC)支持扩展语法,允许用变量作为数组大小(称为“变长数组”VLA),但这并非C++标准的一部分,可移植性差,不建议使用。

总结:在标准C++中,数组定义时的大小不能是变量,需通过动态分配或容器实现动态大小的需求。

0 条评论

目前还没有评论...