2013-02-06 44 views
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; 
} 
+0

@jrok:这不是C语法如何工作 – Eric

+0

@Eric你是绝对正确的。 C没有'new' :) – jrok

+0

@jrok:'s/C/C++ /' – Eric

回答

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; 
} 
+0

非常感谢 – user2048651

1

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

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

+0

int * arr = new int [10]'在全局范围内是完全有效的。 –

+0

好点。 ... –

3

你甚至不必使阵列的动态,你可以把数组中的外主静态存储器,只要该方案将居住。

#include <iostream>  

int arr[10]; 

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

或者(因为你是分配一个固定大小的数组):

int arr[10];