无法声明文件指针数组

Unable to declare FilePointer Array

本文关键字:指针 数组 文件 声明      更新时间:2023-10-16

我正在尝试在VS2010中编译C++程序。我正在使用下面的代码,但在编译时出现错误。

int c=1;
FILE *f[c+2];

错误说我不能在那里使用c。它必须是常量值,但我的要求是我不能在那里使用常量。请指教。

谢谢Amit Agarwal

在C++中,大小不是常量表达式的数组拼写为vector

int c=1;
vector<FILE*> f(c+2);

使用动态分配:

int c=1;
FILE *f = new FILE[c+2];

但是,请务必在使用完指针后释放指针:

delete []f;

更好的是,您可以使用std::unique_ptr VS 2010支持它:

int c=1;
std::unique_ptr<FILE[]> fp(new FILE[c+2]);

请务必在声明std::unique_ptr的位置包含#include<memory>

优点是不必使用 delete [] 来释放指针。编译器负责内存管理。

VS不附带C99编译器,也不支持可变长度数组。因此,数组维度应该是一个常量。

int c=1;
FILE *f[3];

由于您需要动态分配,因此您可以使用

int c=5;
FILE *f = new FILE[c+2];

您可以按如下方式实现此目的:

#define MAX_FILES

文件* f[MAX_FILES+1];

或者您使用"新"进行动态分配