C++代码int [] a = new int[size];编译报错,求合法写法调整
C++动态数组创建的语法修正
你写的int [] a = new int[10];是Java风格的数组声明,C不支持这种语法,以下是两种符合C规范且贴近原伪代码的修正方案:
方案1:使用指针+动态内存分配(最贴近原写法逻辑)
这是直接对应伪代码中“动态创建数组”的C++写法:
#include <iostream> using namespace std; int main() { int* a = new int[10]; // 将[]移至变量名后,声明为int类型指针 cout << a[0]; delete[] a; // 必须手动释放动态分配的内存,避免内存泄漏 return 0; }
- 说明:C++中
new[]返回的是数组首元素的指针,所以变量需声明为int*;动态分配的内存不会自动回收,必须用delete[]释放(注意是delete[]而非delete,对应数组的释放逻辑)。
方案2:使用std::vector(现代C++推荐,更安全)
如果不想手动管理内存,推荐用C++标准库的std::vector,它本质是动态数组容器,用法和普通数组一致,还会自动处理内存回收:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> a(10); // 创建大小为10的int动态数组 cout << a[0]; // 无需手动释放内存,vector会在生命周期结束时自动回收 return 0; }
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

