是否有可能在c++中声明main函数中的全局变量?如果可能的话,怎么做



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

在c++中,如果你需要一个可变大小的数组,99%的情况下,你应该使用std::vector .

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

从你的问题标题

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

不,这是不可能的声明全局变量在main()内,或任何其他函数的作用域。全局变量必须在任何函数作用域之外声明。

正如你所提到的,数组的大小取决于运行时的输入,数组的大小不能在编译时确定。

即使你的编译器支持VLA,这些也不能在全局范围内使用。

正如@Brian已经指出的那样,您需要在运行时提供一些动态内存分配,例如std::vector:

 std::vector<int> myArray;
 void initArray() {
      int arraySize;
      std::cout << "Enter array size: "; 
      std::cout.flush();
      if(std::cin >> arraySize) {
          myArray.resize(arraySize);
      }
 }

可以使用指向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
}

相关内容

最新更新