作用域与链接属性

December 6, 2015 11:23 AM

1.作用域
文件作用域:从申明位置开始到问价结束
原型作用域:从申明开始到结束,仅限于申明处,主要用于防止参数重名
代码块作用域:位于一对花括号之内,从申明开始到右花括号
函数作用域:只有语句标号属于函数作用域,,不需要先申明再使用,一个函数所有语句标签唯一
2.链接属性

源文件被分别编译之后,所有目标文件、库文件链接之后成为可执行文件。链接属性决定不同源文件中同名标识符的链接方式,链接属性仅第一次申明有效。

链接属性含义
external不同文件相同标识符属于同一个实体。(全部变量,函数名默认为external)
internal用一个源文件相同标识符属于同一个实体(Static只对属性为external的有效,一般修饰函数)
none相同标识符属于单独个体(局部变量默认为none)
3.存储类型

变量的存储类型指存储变量的内存类型,决定了变量合适何时创建、何时销毁以及他的值保存多久。

存储类型含义
static静态存储,位于普通内存,代码块之外申明的变量、静态变量默认为static,程序运行前创建,运行期间已知一直存在。形参不可用static修饰
auto自动存储,位于堆栈,代码块内部申明的局部变量默认为auto,形参传递在堆栈中进行,用于支持递归所以形参一定为auto类型
register位于硬件寄存器,提高执行效率,申明后编译器根据需要确定是否需要分配寄存器
4.总结
变量类型申明位置是否存于堆栈作用域声明为static
全局代码快之外申明到结束不允许其他文件访问
局部代码块起始整的代码块不存于堆栈,执行期间一直存在
形参函数头整个函数不允许,堆栈传递
函数不允许其他文件访问
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值