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

C++: How to make an array global accessible?

本文关键字:全局 访问 数组 何使 C++      更新时间:2023-10-16

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

#include <cstdlib> // atoi
int *p[];
int main (int argc, char** argv)
{
    int x = atoi (argv[1]);
    int i[x];
    p = &i;
}

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

像这样:

#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]));
    // ...
}

(有很多方法可以将字符串解析为整数;选择最适合您需要的方法,例如考虑错误处理。)

i的大小在编译时就已经知道了。

在这种情况下,您应该在运行时分配内存。你必须这样做:

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