C 语言中的变量

  1. 自动变量
  • 属于自动存储类别的变量,具有自动存储期(变量的存在只在程序进入变量声明所在的块时,程序退出则该变量所在内存位置可被他用)、块作用域且无链接(即只能在该变量定义所在的块中通过变量名访问该变量,其他函数可以使用同名变量)。
  • 一般,声明在块或者函数头中的任何变量都属于自动存储类别。
  • 为了更明确的表示该意图,可以显式使用关键字auto(该关键字为存储类别说明符)
  • 自动变量必须显示初始化,如不初始化则该变量的值时之前占用该空间中的任意值。
  1. 寄存器变量
  • 寄存器变量一般(register只是一种请求,未必能真的分到)存储在寄存器中而非内存中,访问与处理改变量的速度更快,但无法获取改变量的地址。
  • 它与自动变量一样,属于块作用域、无链接、自动存储期。
  • 使用存储类别说明符register可声明改变量。
  1. 块作用域的静态变量
  • 具有文件作用域的变量自动具有静态存储期;
  • 该变量具有块作用域。无链接,但属于静态存储期(该变量在内存中原地不动,不是说他的值不会变),与自动变量的区别即存储期不同,自动变量每次程序进入块都要被初始化一次,而static修饰的变量,初始化只会一次;若未被初始化则会被初始化为0.
  • 存储类型说明符static可用于声明该变量。
  • 该变量也常被称为内部静态存储变量(此处的内部指的是函数内部而非内部链接)
  1. 外部链接的静态变量
  • 具有文件作用域、外部链接、静态存储期。
  • 又叫外部变量,可以使用extern来声明
  • 未显示初始化时,该变量则会被自动初始化为0
  1. 内部链接的静态变量
  • 具有文件作用域、内部链接、静态存储期
  • 用static修饰的,在所有函数外部的(全局变量加static使其变成内部链接)

注:内部链接和外部链接的重要性主要体现在,程序哟多个翻译单元组成时,此时,多个文件要共享一个外部变量,改变量只能在一个文件中定义式声明,在其他文件中引用式声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值