函数和变量的存储类型声明.md

参考: C语言程序设计:现代方法 第18章 声明

变量存储类型

  1. auto : 只对属于块的变量有效, 具有自动存储期限, 块作用域并且无链接. auto 从来不明确的指明
  2. static : 可用与全局变量, 而不必考虑变量声明的位置. 在块作用域外面时, 说明变量具有内部链接, 而在外部时, 把变量的存储期限从自动的变成了静态的.
  3. extern : 可以使几个源文件共享一个变量. 其声明的变量具有静态存储期限, 作用域依赖于变量的声明,
  4. register : 其要求编译器把变量存储在cpu的寄存器中, 而不会像其他变量一样驻留在内存中. 要注意的是, 它只是一种请求, 编译器也可以把变量放在内存中, 一般在变量需要频繁的访问和更新时使用. 只对声明在块内的变量有效. 同时由于寄存器没有地址, 对此类型声明的变量使用 & 操作符是非法的. 即使编译器把变量放在内存中, 这一限制任然适用.

函数的存储类型

  1. extern : 说明此函数具有外部链接, 也就是允许其他文件调用此函数
  2. static : 说明函数是内部链接, 也就是只能在定义函数的文件内调用此函数, 如果不指明函数的存储类型,那么函数具有外部链接.

类型限制符

  1. const : 声明变量是只读的, 及在显示初始化后就不能更改变量的值.
  2. volatile : 使我们可以通知编译器, 程序中的某些数据是’'易变"的, "易变"是指在程序运行期间即使没有改变变量的值, 变量的值也可能会改变. 所以此限定符会通知编译器此变量每一次必须从内存中重新获取.
    ##restrict 关键字
    概括的说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。
    **参考:C99中的restrict关键字 **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值