C中存储类,链接,作用域

C中存储类,链接,作用域

C中变量按照不同的标准有不同的分类方式,总的来说主要有三大类:存储周期,作用域,链接。

 

作用域:

作用域描述了程序中可以访问一个标志符的一个或多个区域。目前主要包括以下:

文件作用域:在所有函数之外定义的变量具有文件作用域。

函数原型作用域:从变量定义到原型声明的末尾。注意此时可以不写变量具体名称,编译器只关注变量的类型,如下(两者等价):

 

 

int showtime ( int time);
int showtime ( int );

 

 

代码块作用域:在某一函数代码段内定义的变量具有代码块作由域,当程序离开该代码块后变量失去作用。

 

链接:

一个c变量具有以下链接之一:外部链接,内部链接或空链接

具有代码块和函数原型的存储周期的变量具有空链接,这意味着他们是有其定义所在的代码块或函数原型所私有的。具有文件作用域的变量可能具有外部链接或内部链接。一个具有外部链接的变量在一个程序包含的多个文件中任意使用;具有内部链接的变量只能在本文件内部的所有函数内使用。内部链接是通过关键字static来说明:

 

 

 

int time=6;             //文件作用域,外部链接
static int time=6;    //文件作用域,内部链接
int main()
{
…
}

  

存储周期:

一个c变量具有两种存储周期:静态存储周期和自动存储周期,如果一个变量具有静态存储周期,它在程序执行期间将一直存在。具有文件作用域的变量具有静态存储周期;而具有代码块作用域的变量一般具有自动存储周期,当程序进入定义这些变量的代码块时,将为这些变量分配内存,当退出这个代码时将释放其内存。

 

C根据以上这个概念定义了5个存储类,如下:

 

 

存储类                  

时期

作用域

链接

声明方式                            

自动

自动

代码块

代码块内

寄存器

自动

代码块

代码块内,使用关键字register

具有外部链接的静态

静态

文件

外部

所有函数之外

具有内部链接的静态

静态

文件

内部

所有函数之外,使用static

空链接静态

静态

代码块

代码块内,使用static

 

 

注意:

说明符static在用于具有代码块作用域的变量时,使该变量具有静态存储周期,从而使其在程序运行期间一直存在,该变量具有代码块作用域和空链接。当static用于文件作用域的变量的声明时,表明该变量具有内部链接。当使用static声明或定义一个函数时,表明创建为一个特定模块所私有的函数,从而避免可能的名字冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值