c存储类型的关键字auto extern static regisger

存储类型的关键字有四个auto(自动),extern(外部),static(静态),register(寄存器)
关键字auto
  自动变量auto的作用域局限于定义它的块,从块内定义之后直到该块结束前有效。当执行的控制进入块时,系统为自动变量在栈上分配内存,当退出块时,系统释放分配给自动变量的内存,因此,变量的值就消失了。
关键字extern
(1)外部变量的存储类型是extern,但是在定义的时候不使用关键字extern.
(2)外部变量的生命周期是永久的,存在于整个程序的执行期间。如果定义时没有对外部变量显示初始化,其缺省初值是0,如果有显示初始化,只执行一次赋初值操作。
(3)外部变量的作用域是从定义之后直到该源文件结束的所有函数,通过用extern进行声明,外面变量的作用域可以扩大到整个程序的所有文件。
(4)外部变量的声明语句可以在函数之外,也可以在函数内部。如果在函数之外,则从声明之后到文件结束的所有函数都有效。如果在函数内部,则所用使用该外部变量的函数内部都要写一条声明语句。
(5)在定义局部变量的块内,同名的外部变量不起作用。
关键字static
关键字static有两种截然不同的用法:
(1)    用于定义局部变量,称为静态局部变量。
 静态局部变量的作用域和自动变量一样,只作用于它的块。区别是:静态局部变量在程序执行期间不会消失,它的值具有连续性,即当退出块时,它的值可以保存下来,以便再次进入块时使用,而自动变量的值在退出块时就消失了。
(2)    用于定义外部变量,称为静态外部变量。
静态变量的存储分配方式是静态分配方式,其生命周期是永久的,存在于整个程序的执行期间,缺省初值是0
  静态外部变量和外部变量的唯一区别是作用域的限制。静态外部变量只能作用于定义它的文件。而外部变量用extern声明后可以作用于其他文件。
 关键字register
此关键字只能用来定义局部变量,且把该变量存储在计算机的高速硬件寄存器中,除此之外和自动变量完全相同。
 
PS :作用域
   局部变量的作用域是该变量所在的程序块。
外部变量的作用域从其定义处开始一直到其所在文件的末尾。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值