gpt4 book ai didi

c - 在 C 的 main 函数中使用静态变量是否有意义?

转载 作者:太空狗 更新时间:2023-10-29 14:51:17 26 4
gpt4 key购买 nike

就我目前对“static”关键字的理解而言,它可以防止变量被重新初始化,并且可以防止变量在函数结束时离开内存。

在 C 语言中,我通常在变量不需要是全局变量但不应该在函数调用之间更改时使用它。 (f.i. 微 Controller 中断)

现在,在 STM32 的一些 C 代码中,我看到了以下内容:

int main(void)
{
static char buffer[CONSOLEBUFFERSIZE];
...

对我来说,这没有意义。此变量用于缓冲传入命令,以便在收到终止字符时处理它们。但是我之前描述的“静态”的两个属性不适用于主函数,因为 main() 只被调用一次并且“永不”结束。所以我的实际问题:

这会不会是在使用一些我不知道的花招,或者它只是从中断或其他函数中复制代码,而程序员是否忘记或懒得删除 static 关键字?

最佳答案

一个区别是,静态变量通常使用程序的数据段而不是堆栈。也许这就是将 buffer 声明为 static 的原因(尤其是当 CONSOLEBUFFERSIZE 很大时)。

关于c - 在 C 的 main 函数中使用静态变量是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249779/

26 4 0
文章推荐: c - 在数组上使用字符串的 Switch 语句
文章推荐: android - React-Native 无法获取/和 JS 包
文章推荐: android - 如何在脚本完成后自动退出 Qpython (android) 控制台?
文章推荐: javascript - 根据值更改