C ++:如何使数组全局可访问?

时间:2013-11-29 23:14:29

标签: c++ arrays pointers size global-variables

如果我必须首先从argv计算其大小,我如何使数组全局可访问(例如通过指针)?

#include <cstdlib> // atoi

int *p[];

int main (int argc, char** argv)
{
    int x = atoi (argv[1]);
    int i[x];
    p = &i;
}

错误:'p'的存储大小未知

2 个答案:

答案 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;
}