我有一个数组和一个保持其大小的变量。这个数组是全局的(在main之外)。问题是我不知道大小所以我必须像这样声明它(伪代码):
int a[]; // don't know the size yet (outside main)
int size = [user input] // this is inside main
size变量在main中。这就是出现问题的地方:
在用户输入后如何给出数组的大小?我的阵列需要是全局的,所以我很难搞清楚这一点。
答案 0 :(得分:4)
在C中,你不能拥有带有文件范围的可变长度数组。
您可以做的是使用文件范围指针并使用malloc
分配内存。
#include <stdlib.h>
int *a; // outside main
int main(void)
{
a = malloc(user_input * sizeof *a); // this is inside main
// ...
}
答案 1 :(得分:1)
您需要的是动态分配的数组。
int *a; /* sure you need it global? */
在函数内部(main?)用以下函数初始化它:
a= malloc(sizeof(int)*usersize);
答案 2 :(得分:1)
您可以定义指针并指向将动态分配的数组
int *a;
然后在mai n中,当你获得大小时,你可以为你的数组分配内存,并指向一个指针:
a = malloc(size * sizeof(int));