如何为超出范围的数组提供可变存储大小?

时间:2013-02-05 19:38:32

标签: c

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

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

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

size变量在main中。这就是出现问题的地方:

在用户输入后如何给出数组的大小?我的阵列需要是全局的,所以我很难搞清楚这一点。

3 个答案:

答案 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);

并阅读C memory management

答案 2 :(得分:1)

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

int *a;

然后在mai n中,当你获得大小时,你可以为你的数组分配内存,并指向一个指针:

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