-2

这也是声明动态数组的有效代码。

malloc需要指针,这不需要。这是更好的方法吗?

 printf("enter the size of array")
 scanf("%d",&x)
 const int size
 size = x
 int array[size]
4

1 回答 1

1

很难说一个比另一个更好,一个更好的问题是每个的优点是什么,你需要根据你的要求来决定,但是使用malloc和使用可变长度数组(VLA)是不一样的。

有一些主要区别。1)VLA 通常会在堆栈上分配,尽管这是一个实现决定,标准只是说有automatic. 堆栈比 'ed 数组所在的堆更受限制malloc,因此您可以轻松地溢出堆栈。2)您需要释放一个malloc'ed 数组 VLA 是一个自动变量,并且不会存在于声明它的范围之外3)。VLA 是的一部分,C99 standard因此使用的代码VLA将不可移植

于 2013-08-05T16:04:00.477 回答