这也是声明动态数组的有效代码。
malloc
需要指针,但事实并非如此。这是一种更好的方法吗?
printf("enter the size of array")
scanf("%d",&x)
const int size
size = x
int array[size]
答案 0 :(得分:1)
很难说一个人是否比另一个更好,一个更好的问题是每个人的优势是什么,你需要根据你的要求决定但是使用malloc
并使用可变长度数组({ {1}})不一样。
存在一些主要差异。VLA
VLA通常会在堆栈上分配,尽管这是一个实现决策,标准只是说有1)
。堆栈比堆automatic
'ed数组所在的堆更受限制,因此您可以轻松地溢出堆栈。 malloc
您需要释放2)
'ed数组,VLA是一个自动变量,并且不会在声明范围之外存在。malloc
VLA是{{3}的一部分所以使用3)
的代码不会是C99 standard
。