C语言中存储类型和Static关键字
2015-06-25 17:55
211 查看
变量的存储类型是指存储变量值的内存类型。变量的存储类型决定变量何时创建、何时销毁以及它的值将保持多久。有三个地方可以用于存储变量:普通内存、运行时内存、运行时堆栈、硬件寄存器。
静态变量:凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存。
自动变量:在代码块内部声明的变量缺省存储类型是自动的,它存储于堆栈中。如果给它加上static关键字,可以使它的存储类型从自动变为静态,但是它并不修改该变量的作用域。
寄存器变量:关键字register可以用来自动变量的声明,提示它们应该存储于机器的硬件寄存器而不是内存中。
总结:当static关键字用于不同的上下文环境时,具有不同的意思。上一篇文章已经提到,当它用于代码块之外的变量声明时,或用于定义函数时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响。
当它用于代码块内部的声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响。
静态变量:凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存。
自动变量:在代码块内部声明的变量缺省存储类型是自动的,它存储于堆栈中。如果给它加上static关键字,可以使它的存储类型从自动变为静态,但是它并不修改该变量的作用域。
寄存器变量:关键字register可以用来自动变量的声明,提示它们应该存储于机器的硬件寄存器而不是内存中。
总结:当static关键字用于不同的上下文环境时,具有不同的意思。上一篇文章已经提到,当它用于代码块之外的变量声明时,或用于定义函数时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响。
当它用于代码块内部的声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响。
相关文章推荐
- IE7降低内存和降低CPU的几个技巧
- 如何高效的使用内存
- DOS下内存的配置
- Lua和C语言的交互详解
- XP/win2003下发现1G的内存比512M还慢的解决方法
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 探讨C语言的那些小秘密之断言
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解