是否可以在c ++中的main函数内声明一个全局变量?如果可能怎么样?

时间:2015-09-23 18:53:27

标签: c++ global-variables main

要解决问题,我需要一个应该被其他功能访问的2D数组。我觉得传递指针然后在其他函数中使用指针是有问题的。由于数组的维度依赖于输入,因此我不想声明一个巨大的2D全局数组 所以我想在main中声明一个2D数组作为全局数组,并从其他函数访问它。

3 个答案:

答案 0 :(得分:4)

在C ++中,如果你需要99%的可变大小数组,你应该使用std::vector

我同意传递指针。让我们假设你有一个很好的理由不这样做。然后,在全局范围内声明std::vector并在main内为其指定所需的大小。

答案 1 :(得分:2)

从问题标题开始

  

是否可以在c ++中的main函数内声明一个全局变量?如果可能的话怎么办?

不,在<{1}}或其他任何功能中声明全局变量是不可能的。范围。必须在任何函数范围之外声明全局变量。

正如您所提到的,根据运行时输入可变大小的数组,无法在编译时确定数组大小。

即使您的编译器支持VLA,这些也无法在全球范围内使用。

正如@Brian已经指出的那样,你需要在运行时进行一些动态内存分配,就像它提供的一样。 main()

std::vector

答案 2 :(得分:0)

您始终可以使用指向 std :: vector 的指针。这是一个示例代码,

#include <iostream>
#include <vector>
using namespace std;

vector<int>* v;

int main(){
int n;
cin >> n;
v = new vector<int>(n);
// now you can simply pass the vector to any function
}