1

我是 C/C++ 新手,我有一个关于动态分配数组的问题。你不能做一个全局动态分配的数组吗?如果我想让 arr 被多个函数使用怎么办?我必须将 arr 传递给每个函数吗?基本上我想我仍然对动态分配数组的概念以及如何创建一个可由几个函数使用的数组感到困惑。

以下产生:错误:'arr'没有命名类型,但我不确定为什么。

#include <iostream>      

using namespace std;

int * arr = NULL;
arr = new int [10];

int main() {
   arr[0] = 1;
   return 0;
}
4

4 回答 4

3

无效的原因与无效的原因相同

#include <iostream>      

using namespace std;

int a = 0;
a = 2;

int main() {

}

您不能在函数之外运行语句,只能运行初始化程序。结果,这有效:

#include <iostream>      

using namespace std;

int *arr = new int[10];

int main() {
   arr[0] = 1;
   return 0;
}
于 2013-02-06T22:04:57.527 回答
3

您甚至不必使数组动态化,只需将数组放在 main 外部的静态内存中,它就会与程序一样长。

#include <iostream>     

int arr[10];

int main() {
   arr[0] = 1;
   return 0;
}
于 2013-02-06T22:07:28.713 回答
1

您不能在函数之外拥有“代码”。您需要将调用new放在一个函数中 - 您的代码中只有一个:main,但只要它是在您访问数组之前执行的函数,就可以了。

正如评论所说,您也可以这样做int *arr = new int[10];- 只要它是初始化的一部分,而不是在单独的行上。

于 2013-02-06T22:04:35.703 回答
1
int* arr = new int[10];

或(因为您分配了一个恒定大小的数组):

int arr[10];
于 2013-02-06T22:07:50.247 回答