0

我有一个数组和一个变量来保存它的大小。这个数组是全局的(在 main 之外)。问题是我不知道大小,所以我必须像这样声明它(伪代码):

int a[]; // don't know the size yet (outside main)

int size = [user input] // this is inside main

大小变量在 main 内部。这就是问题出现的地方:

用户输入如何为数组指定大小?我的数组需要是全局的,所以我很难弄清楚这一点。

4

3 回答 3

4

在 C 中,您不能拥有具有文件范围的可变长度数组。

您可以做的是使用文件范围指针并使用malloc.

#include <stdlib.h> 

int *a;  // outside main

int main(void)
{
    a = malloc(user_input * sizeof *a);  // this is inside main 

    // ...
}
于 2013-02-05T19:39:36.977 回答
1

您需要的是一个动态分配的数组。

int *a;  /* sure you need it global? */

在一个函数(main?)中初始化它:

a= malloc(sizeof(int)*usersize);

并阅读有关C 内存管理的信息

于 2013-02-05T19:40:58.427 回答
1

您可以定义一个指针并指向一个将动态分配的数组

int *a;

然后主要是当你获得大小时,你可以为你的数组和指向它的指针分配内存:

a = malloc(size * sizeof(int));
于 2013-02-05T19:41:48.550 回答