c - 使用 const int 的动态数组

标签 c arrays dynamic

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

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/

相关文章:

c - 如何在 C 中调试不干净的套接字关闭?

c - 使用 recv 接收传入的 char 数组

c - 将 char 指针数组传递给 C 中的函数?

c - 在c中输入动态结构数组的malloc函数中的元素数量

javascript - 如何通过 JavaScript 动态创建动画路径?

c++ - 删除未引用的动态内存

代码逻辑: Friday the Thirteenth (USACO)

c - 简单的 C 代码错误

ios - 字符串上的 XCTAssertEqual 总是失败

arrays - 使用指针交换数组