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