根据c99标准,我们可以编写以下代码,并且它是完全合法的。
我的问题是:如果我可以像这样分配一个数组,为什么我还需要malloc来分配可变大小的数组呢?另外,请问您能解释一下可变长度数组的分配是如何进行的吗?在深层内部,它是调用malloc来分配数组还是怎样的呢?
int x;
scanf("%d",&x);
int ar[x];
我的问题是:如果我可以像这样分配一个数组,为什么我还需要malloc来分配可变大小的数组呢?另外,请问您能解释一下可变长度数组的分配是如何进行的吗?在深层内部,它是调用malloc来分配数组还是怎样的呢?
malloc()
分配的数组存储在堆上,因此与其他类型的数组存储方式不同。 - Vinicius Kamakura