【c基础】全局变量-局部变量 静态变量static-自动变量auto 外部变量extern-内部变量static 常量const-宏定义#difine

来源:互联网 发布:canvas js库 编辑:程序博客网 时间:2024/06/05 01:12

标题已经给出了分类。不同分类下的定义互不干扰,尤其注意静态和全局,计算机等级考试和初级程序猿面试常见问题。


(1)全局变量<—>局部变量

       这个组合是规定变量的作用域

有局部变量的地方,全局变量被屏蔽。局部变量的定义函数之外,全局变量生效。


(2)静态变量static<—>自动变量auto

       这个组合是规定变量的生命周期

默认auto,auto关键字可省略。

静态变量在main之前出生,一直被调用,直到main结束死亡。注意,静态不静态不影响的作用域,作用域由全局不全局决定。

auto是默认类型,不必写出。初始化时出生,初始化它的函数return时死亡。


(3)外部变量extern<—>内部变量static

         这个组合是规定变量的链接属性(存在的.c文件)

默认extern

外部变量extern,声明为extern之后,变量不管在哪定义的,自动成为全局变量,而且在本文件和同工程下的其他文件中皆能访问,即链接属性变为external

内部变量static,全局变量被声明成static,只能在本文件中访问,即链接属性变为internal


(4)常量const<—>宏定义#difine

1、预编译指令#difine只是对值进行简单的替换,不能进行类型检查。

2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性。

编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率很高。


阅读全文
0 0