我编写了一个C程序,它接受用户输入的整数,用作整数数组的大小,并使用该值声明给定大小的数组,我通过判断数组的大小来确认它.
代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int n;
scanf("%d",&n);
int k[n];
printf("%ld",sizeof(k));
return 0;
}
令人惊讶的是,它是正确的!该程序能够创建所需大小的array.
但是所有的静电内存分配都是在编译时完成的,而在编译时n
值是未知的,那么为什么编译器能够分配所需大小的内存呢?
如果我们可以像这样分配所需的内存,那么使用malloc()
和calloc()
的动态分配有什么用呢?