链接属性和存储类型

链接属性

全局变量和函数具有external链接属性,其余标识符的链接属性则为none。

static关键字可以使链接属性变为internal,而且static只对缺省链接属性为external的声明才有改变链接属性的效果。

存储类型

有三个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。
变量的缺省存储类型取决于它的声明位置:
一:凡是在任何代码块之外声明的变量总是存储于静态内存中,这类变量称为静态(static)变量。
二:在代码块内部声明的变量的存储类型是自动的(automatic),也就是存储于堆栈中,称为自动(auto)变量。
对于代码块内部声明的变量,如果给它加上关键字static,可以使它的存储类型从自动变为静态。
修改变量的存储类型并不修改该变量的作用域,仍然只能在该代码块内部按名字访问。

函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归。

static关键字

当用于函数定义或者用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响。用这种方式声明的函数或变量只能在声明它们的源文件中访问。

当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响。用这种方式声明的变量在程序执行之前创建,并在程序的整个执行期间一直存在,而不是每次在代码块开始执行时创建,在代码块执行完毕后销毁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值