如果我必须首先从argv
计算其大小,我如何使数组全局可访问(例如通过指针)?
#include <cstdlib> // atoi
int *p[];
int main (int argc, char** argv)
{
int x = atoi (argv[1]);
int i[x];
p = &i;
}
错误:'p'的存储大小未知
答案 0 :(得分:4)
像这样:
#include <string>
#include <vector>
std::vector<int> p;
int main(int argc, char ** argv)
{
if (argc < 2) { return 1; } // make sure argv[1] exists!
p.resize(std::stoi(argv[1]));
// ...
}
(有很多方法可以将字符串解析为整数;选择最适合您需求的方法,例如考虑错误处理。)
答案 1 :(得分:0)
我在编译时已知大小。
在这种情况下,您应该在运行时分配内存。 你必须这样做:
int i[] = new int[x];
p=&i;
当不再使用p时,必须释放内存以防止内存泄漏。
delete[] (*p);
整个计划:
#include <cstdlib> // atoi
int *p[];
int main (int argc, char** argv)
{
int x = atoi (argv[1]);
int i[] = new int[x];
p=&i;
//do whatever you want
delete[] (*p);
return 0;
}