C变量存储
2016-03-31 22:18
323 查看
今天写C的变量怎么在电脑中存储的
存储类
存储模型:由3块组成。作用域,链接,存储时期。存储模型可以赋给一个变量,这个变量就有了这3块的不同组合。
先讲3个概念,作用域,链接,存储时期
作用域:
C有3种作用域:代码块作用域,函数原型作用域,文件作用域。函数内:一个函数内的变量(包括形参)作用域为函数的代码块内部,外面看不见。
函数外:函数块外部的变量是文件作用域的,在文件中都可见。
另外,if,while,for这些也一样,变量的作用域在代码块的内部。
链接:
C变量有下面3种链接之一。空链接:代码块作用域和函数原型作用域(指的就是函数原型括号内的参数)的变量是空链接,不会链接到其他地方,是属于代码块私有的
文件作用域的变量(也就是定义在函数外的变量)可以是内部链接或外部链接
内部链接:可以在多文件程序中使用的文件作用域的变量 如static int =3
外部链接:可以在一个文件程序中使用的文件作用域的变量如 int=3
存储时期:
C变量有以下2种变量之一。静态存储时期:变量在程序执行期间一直存在,变量必须先定义。如不定义就直接试用会报错。
自动存储时期:变量是代码块作用域的
下面是存储类的说明符
auto:变量有自动存储时期。register:用在代码块作用域的变量,存储更快。但是不能获得该变量的地址,而且register int x这样的声明不一定有用,因为寄存器数量有限,有可能没有了
static:用在代码块作用域的变量声明时,该变量有静态存储时期。用在文件作用域变量前面时,表示是内部链接
extern:表示声明一个已经在别处定义了的变量。
定义和声明
上代码看区别把int a=1; main(){ extern int a; }
这里变量a声明了2次,第一个是开辟内存空间,是定义变量,也叫声明定义
第二次是使用之前的变量a,所以这次的声明是引用声明。
extern表示该声明不是一个定义,因为它指示编译器参考其他地方
今天就先写这么多把 EOF
相关文章推荐
- cmder小技巧
- oracle10g安装,卸载
- 设计模式之单例类——如何让一个类只实例化一个对象
- mongoDB——split&balance操作
- HDU 1023 Traning Problem (2) 高精度卡特兰数
- 写出一条Sql语句,取出表A中的第31条到第40条记录。表A以自动增长的ID作为主键。(注意:ID可能不是连续的)
- 2016校招阿里电面题【实习】
- 文章标题
- Linux_信号操作
- 计算几何学习笔记之基本运算
- java的自动包装机制在数组中不能使用的问题
- Android Studio提交代码到SVN
- Linux Socket 原始套接字编程
- 2024
- java_生态环境
- 硬链接和软连接
- CListCtrl控件使用方法总结
- Struts2文件上传的大小限制问题
- iOS 五种传值方式
- maven java.lang.OutOfMemoryError:PermGEn space