我是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 :(得分: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];