变量数组声明

时间:2017-10-29 20:05:08

标签: c arrays

考虑下面的C代码:

#include<stdio.h>
int main()
{int n,i;
scanf("%d",&n); 
int a[n]; //Why doesn't compiler give an error here?
}

当编译器最初不知道时,如何声明数组?

1 个答案:

答案 0 :(得分:0)

如果在编译时直到数组的确切大小未知,则需要使用动态内存分配。在C标准库中,有动态内存分配函数:malloc,realloc,calloc和free。

可以在<stdlib.h>头文件中找到这些功能。

如果你想创建一个阵列,你可以:

int array[10];

在动态内存分配中,您可以:

int *array = malloc(10 * sizeof(int));

在你的情况下是:

int *array = malloc(n * sizeof(int));

如果你分配一个记忆位置,永远不要忘记解除分配:

if(array != NULL)
  free(array);

内存分配是一个复杂的主题,我建议你搜索主题,因为我的答案很简单。您可以从以下链接开始:

https://www.programiz.com/c-programming/c-dynamic-memory-allocation