要解决问题,我需要一个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
}