Linux C 之 变量的定义、使用及全局变量

知识补充: 调用 __ FUNCTION__ 可以获取当前函数的标识符,可以用来区分不同函数输出的结果

例:printf("[%s]\n",FUNCTION);

调用 LINE ___ 可以获取函数所在的行号

变量:用来保存一些特定的内容,并且在程序执行过程中值会随时会发生改变的量

定义:[存储类型] 数据类型 标识符 = 值

TYPE NAME = VALUE

标识符:由字母、数字、下划线组成且不能以数以开头的一个标识序列(某块空间的名字),写标识符尽量做到见名生义

数据类型:基本数据类型+构造类型

值:注意匹配

存储类型: auto static register extern(说明型关键字)

auto: 如果变量定义的时候没有指定存储类型,则默认为auto型 ,auto型存储类型自动分配空间,自动回收空间

register: (建议型关键字)寄存器类型,只能用来定义局部变量,不能定义全局变量;大小有限制,只能定义32位大小的数据类 型,如double类型不可以,寄存器没有地址,所以一个寄存器类型的变量无法打印地址查看或使用

static: 静态型,自动初始化为 0 值 或 空值,并值其变量的值有继承性,另外,常用于修饰变量或函数(例如,main.c与func.c中都有关于 全局变量 i 的定义,为了防止冲突即重复定义,可以在func函数定义全局变量 i 的时候加上 static ,即 static int i =0;)

extern:说明型关键字,意味着不能改变被说明的变量的值

变量的生命周期和作用范围:

1)全局变量和局部变量

2)局部变量和局部变量

1)全局变量和局部变量:

   1. 当全局变量与局部变量重名时,函数优先使用局部变量的值  
      2. 全局变量的缺陷:当全局变量关联多个函数模块的时候会出现计数错误,因为每个函数都能改变变量的值

3) 变量的存储器、作用域、链接

存储类别存储期作用域链接声明方式
自动 auto自动块内
寄存器 register自动块内,使用关键字register
静态外部链接(全局变量)静态文件外部所有函数外
静态内部链接静态文件内部所有函数外,使用关键字static
静态无连接静态块内,使用关键字static
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值