c - 在 C 中将可变长度数组声明为全局变量

标签 c global-variables variable-length-array

如何将可变长度数组声明为全局变量?

在扫描长度之前在函数中声明可变长度数组时,它会编译但不会运行。它给出了段错误。当相同的声明语句移动到扫描语句下方时,它运行正常。

如果我们想要一个对所有函数全局可用的可变长度数组,我们该怎么做呢?这里的问题是数组的长度只能通过一些函数来扫描。

最佳答案

可变长度数组(即使用运行时值确定大小的数组)不能是全局变量,因为您用于确定大小的表达式显然必须在编译时计算。它只能存在于堆栈中。大概你得到的是一个静态数组,其大小取决于你在代码中定义它的位置(因为你正在重新定义它所依赖的东西)。

为什么不能只使用全局指针和 realloc() 根据需要调整大小?

关于c - 在 C 中将可变长度数组声明为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360394/

相关文章:

cat 函数无限次调用 read()

java - ANDROID - 如何保存字符串并从任何应用程序访问它

map - 创建全局 map 变量

php - 将全局数据库连接传递到模型的每个函数中有什么好处?

c - VLA 和通过 malloc 进行动态内存分配有什么区别?

c++ - C++14 中的可变长度数组?

带指针的 C 结构认为我没有正确分配内存

c - 使用 GDB 查找断言失败(Discoverying STM32 Microcontroller 一书)

arrays - 将 3D 数组实现为指向可变长度数组的指针

c - 尝试将多个信息存储到文本文件时出错