创建全局动态分配的数组

时间:2013-02-06 22:01:20

标签: c++

我是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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:3)

你甚至不需要让数组动态化,你可以把数组放在main之外的静态内存中,并且它会和程序一样长。

#include <iostream>     

int arr[10];

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

int* arr = new int[10];

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

int arr[10];