变量类型辨析

extern(外部变量)
static(静态变量)
auto(自动变量或局部变量)
register(寄存器变量)
全局变量
普通外部变量
静态全局变量
静态局部变量
作用于同一个工程(程序)的每个文件上。不得重名
在同一个文件中,前面的函数要引用在其后定义的外部变量(在函数外)时
只在定义它的文件内有效。同一工程的其它文件可以有重名,来表示不同含义
只在声明它的函数内有效
只在声明它的函数或语句块中有效
 
只在某个文件(函数外)定义一次,其他文件要引用时,应加extern说明
 
在外部变量前加static
 
 
 
在定义时可以不加extern,在引用时必须加
在定义时可以不加extern,在引用时必须加
 
 
 
 
依据“先声明后使用”原则
依据“先声明后使用”原则
 
 
 
 
在编译时分配空间
在编译时分配空间
在编译时分配空间
在编译时分配空间
在运行时分配空间
在运行时分配空间
隐含初值为0
隐含初值为0
隐含初值为0
隐含初值为0
其初值不确定
 
在所有引用文件内可见
在整个文件内可见
只在该文件内可见
只在该函数内可见
只在声明它的函数或语句块中可见
作用域与生存期与自动变量相同
若在某个函数内部重定义,则在其内部使用被屏蔽,而使用重定义的值,在该函数体后屏蔽结束,继续使用外部变量
若在某个函数内部重定义,则在其内部使用被屏蔽,而使用重定义的值,在该函数体后屏蔽结束,继续使用外部变量
若在某个函数内部重定义,则在其内部使用被屏蔽,而使用重定义的值,在该函数体后屏蔽结束,继续使用外部变量
只在编译时初始化一次
形参可以看作是自动变量,作用域仅限于相应函数内
只有自动变量和函数参数可指定为寄存器变量
在屏蔽期间,若要使用外部变量,可使用作用域运算符::,写法为:: 全局变量名
在屏蔽期间,若要使用外部变量,可使用作用域运算符::,写法为:: 全局变量名
在屏蔽期间,若要使用外部变量,可使用作用域运算符::,写法为:: 全局变量名
当函数执行完返回时,该变量值继续保留。下次再进入该函数,其值仍存在。
在使用前必须明确其值,否则其值不可预料
不能对寄存器变量取地址操作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

变量作用域冲突规则:
当标识符的作用域发生重叠时,在一个函数(或块)中声明的标识符可以屏蔽函数(或块)外声明的标识符或全局标识符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电脑小玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值