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