gpt4 book ai didi

C 局部和全局静态变量

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:25 25 4
gpt4 key购买 nike

我的理解是局部静态变量具有“程序作用域”;也就是说,一旦定义它就会一直存在,直到程序终止。此外,我的理解是局部静态也可以在当前模块/C 文件之外访问,它们在其中定义:

void doSomething() {
static int myVar = 5; // Program scope & accessible to other modules
}

我的理解是全局静态变量也有程序作用域,但它们只对当前模块/C 文件可见:

static int myVar = 5;       // Program scope but "module private"
void doSomething() {
// Whatever here...
}

这不是有点倒退吗?我本来希望它是相反的。那么请问:我上面的理解对吗?如果是这样,那么在当前模块之外访问局部静态而不是全局静态的动机是什么?

最佳答案

你把一切都搞砸了。静态局部变量是对其他函数隐藏数据但保留数据以供将来调用该函数的地方。

静态全局变量有

  • 静态存储时长(保留数据以供将来调用)
  • 内部链接(变量仅限于单个文件)和
  • 文件作用域(只能在当前文件中引用该变量)

静态局部变量有

  • 静态存储时长
  • 没有链接
  • block 作用域

关于C 局部和全局静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31426563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com