这也是声明动态数组的有效代码。
malloc
需要指针,而这个不需要。这是更好的方法吗?
printf("enter the size of array")
scanf("%d",&x)
const int size
size = x
int array[size]
最佳答案
很难说一个比另一个更好,更好的问题是每个的优点是什么,您需要根据您的要求来决定,但使用 malloc
并使用可变长度数组(VLA
) 不一样。
有一些主要差异。1)
VLA 通常会在堆栈上分配,尽管这是一个实现决定,但标准只是说有自动
。堆栈比堆更受限制,堆是经过 malloc 处理的数组所在的位置,因此您很容易溢出堆栈。 2)
您需要释放经过 malloc
处理的数组,VLA 是自动变量,不会存在于其声明范围之外。3)
VLA 是 C99 standard
的一部分因此使用 VLA
的代码将不会是 portable .
关于c - 使用 const int 的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062361/