C语言存储模型

  • 描述方法(三个方面)

 
作用域
代码块、函数原型
文件作用域
链接类型
外部链接
内部链接
空链接
存储时期
静态存储时期
动态存储时期
 作用域强调的是变量的作用范围,即变量是否“可见”;连接类型指的是能否被其他文件所使用;存储时期指的是变量的存储空间的生存周期。
 
 
 
  • 变量类型

 
                                 变量存储类型
作用域
链接类型
存储时期
C语言存储模型
文件
外部
静态
具有外部链接的静态
内部( static)
具有内部链接的静态
代码块
无链接
静态(static)
空链接静态变量
动态
自动变量
寄存器(性质与自动变量类似,存储在寄存器中)
寄存器
 
即,具有文件作用域的变量,可以是外部链接和内部链接的,但存储时期都是静态的;具有代码块作用域的变量都是无链接的,但是存储时期可以是动态的,亦可以是静态的。 
 
 
注:
  1. 具有外部链接的在其他文件使用前必须以exturn声明
  2. 具有静态存储期的变量必须使用常量初始化(编译阶段获得值)
  3. 局部静态变量在非定义的代码块域虽然一直存在,但不可见,不可使用。
 
 
全局变量要慎用,原因有两个:
  1. 命名重复
  2. 其他函数可能违背意图将其值改变
 

程序通常把内存分为3个部分:
  1. 静态变量存储
  2. 自动变量存储
  3. 动态分配变量的存储

 

参考文献:

[1].Prata S. C Primer Plus, 6th Edition[J]. 2014

转载于:https://www.cnblogs.com/wanglun/p/7114817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值