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