无法声明文件指针数组
Unable to declare FilePointer Array
我正在尝试在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];
或者您使用"新"进行动态分配
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空