不一样的C语言-auto,register,static,extern
来源:互联网 发布:新人一元购的软件 编辑:程序博客网 时间:2024/06/05 03:33
auto,register,static,extern
《不一样的C语言》开篇中,笔者写出了对变量的认识,本篇文章中,笔者继续来探究与变量相关的auto,register,static,extern修饰符,进一步加深对变量的理解。
auto、register修饰的是变量,static和extern既能修饰变量也能修饰函数,本文中对于函数部分一笔带过,待研究函数时再来详细谈论。
一、auto修饰符:
二、register修饰符:
register,意外寄存器,修饰变量,称为寄存器变量。寄存器是存介质中最接近CPU也是速度最快的设备,将变量存储中这个介质中,无非就是想最大可能的提升变量的操作速度。对于现代编译器而言,register修饰符并不一定会“得逞”,register修饰符变成了对编译器的请求。求是求,编译器不一定满足你。这么做的原因我猜是编译器厂商认为编程的这帮人没有老程序员那么让人放心,于是乎对register进行了优化。对于register修饰的变量有这么几个要求:
1.register修饰的是局部变量。这很容易让人信服,因为寄存器虽快,但是数量非常有限。在一个庞大的计算机系统中,运行着许许多多你想运行和不想运行的程序,他们共享寄存器,如果以定义了大量的全局变量来占用寄存器,那寄存器资源就变得岌岌可危了,整个系统的速度不但没有提升反而下降。所以register修饰局部变量就显得顺理成章。
2.register不能用取地址符&。这不太让人好理解,事实上寄存器也是有内存地址的,但是为什么编译器不给我们取地址。我想这是出于安全的考虑。寄存器是一个极度共享的存储介质,寄存的意思就是短暂的停留,数据进进出出。程序与程序之间应该是相互隔离而不可见的,所以可能出于安全的考虑,编译器阻止了这个行为。
三、static修饰符:
四、extern修饰符:
总结:
- 不一样的C语言-auto,register,static,extern
- C语言auto、register、static、extern关键字
- C语言中的auto、static、register和extern的区别
- c语言auto、static、extern、register、volatile存储的理解
- C 语言中 auto/static/register/extern 的区别
- C语言关键字auto、static、register、const、volatile、extern
- C语言中的auto、 register、extern、static用法
- C语言中的auto,register,volatile,extern,static,const
- C语言中auto,register,extern,static【转】
- C语言中的auto,register,static,const,volatile,extern
- C语言之auto、static、register、const、volatile、extern关键字
- c语言中auto、register、extern、static用法
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中auto,register,static,const,volatile,extern的区别
- C语言中auto,register,static,const,volatile,extern的区别
- C语言中关键字auto、static、register、const、volatile、extern的作用
- rails 日常总结(一)
- 数据库连接池
- iOS设置状态栏样式,显示控制,statusBarStyle, statusBar
- 在监听器中使用@Autowried调用service层包null的解决方案
- 商城支付~支付宝~加密
- 不一样的C语言-auto,register,static,extern
- tail语法格式
- http请求返回状态码详解
- 基本面要与技术面结合
- YAMAHA机械手的使用注意事项
- FreeMark登录界面
- 报错之JsonNode转换list实体类时Unrecognized field "TotalAmount" (Class com.ztc.SQZuChe.domain.SQZCOrderDtail)
- 跟着测试大哥认识LoadRunner
- 解决grails上传图片大小过大报错问题