当前位置:   article > 正文

存储类_有坏的存储类

有坏的存储类

存储类

C语言为变量提供了5种不同的存储类。不同的存储类提供了变量的作用域,链接以及存储时期的不同组合。变量的作用域和链接一起表明程序哪些部分可以通过变量名使用该变量;存储时期程序在什么时间可以通过变量名使用该变量。

作用域

  • 代码块作用域
    整个函数是一个代码块,一个函数内的任何复合语句也是一个代码块。在代码块中定义的变量具有代码块作用域,从该变量被定义的地方开始到包含该定义的代码块的末尾该变量均可见,另外,函数的形式参量尽管在函数的开始花括号之前定义,同样也具有代码块作用域,隶属于包含函数体的代码块。
  • 函数原型作用域
    函数原型作用域从变量定义处一直到原型声明的末尾。
  • 文件作用域
    在所有函数之外定义的变量具有文件作用域。具有文件作用域的变量从定义处到包含该定义的文件结尾处都是可见的。

链接

  • 外部链接
    具有文件作用域的变量有外部链接,可以在一个多文件程序的任何地方使用。
  • 内部链接
    具有文件作用域且有static修饰的变量有内部链接,可以在该文件的任何地方使用。
  • 空链接
    具有代码作用域或者函数原型作用域的变量有空链接,意味着它们由其定义所在的代码块或函数原型所私有。

存储时期

  • 自动存储时期
    具有代码块作用域的变量默认为自动存储时期,在程序进入代码块时,为这些变量分配内存,当退出代码块时,释放内存。
  • 静态存储时期
    具有文件作用域的变量以及有static修饰的代码块作用域变量具有静态存储时期,它在程序执行期间一直存在。

总结

存储类时期作用域链接声明方式
自动自动代码块代码块默认,或者使用关键字auto
寄存器自动代码块代码块,使用关键字register
外部链接静态静态文件静态所有函数之外
内部链接静态静态文件静态所有函数之外,使用关键字static
空链接静态静态代码块代码块,使用关键字static

PS

函数也有存储类,函数在默认情况下是外部的,可以被其他文件中的函数调用,也可以static关键字修饰,使其成为静态函数,静态函数只能在定义它的文件中使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/49777?site
推荐阅读
相关标签
  

闽ICP备14008679号