关于变量作用域(内部、外部)及存储类型(auto、static、register)的总结

可见性就是在在什么地方可以调用,能调用的地方就是可见,而存在性,就是在什么地方什么时候初始化,然后使用完后在什么地方什么时候释放,存在性一般是在运行时的生命周期内起作用的,这个题目里除了static其他都是在函数结束时自动释放了。

     一、变量的 作用域  存储类型

一个 C 程序( *.EXE )由若干个 C 文件( *.C )组成,一个( *.C )文件由若干个 C 函数组成。函数内、外均可(根据需要)定义或声明变量。

【 按作用域划分 】 内部变量 外部变量

内部变量 :在函数内定义变量称为内部变量(局部),若为自动存储类型,默认初始化值为不确定值,若为static类型则为0或空字符;

外部变量: 在函数外定义变量称为外部变量(全局),默认初始化值为0或空字符;

二者区别 定义出现的位置

【 按存储类型划分 】 auto、static/register(动态、静态/寄存器变量)

变量 定义 一般 格式 : [ 存储类 型 ] 数据类型 变量表

auto :动态:( 存储类 型 缺省时,系统默认为动态;)

      位置:动态区

特点: 程序运行时动态分配,每次调用时都重新赋初值,调用不赋初值时,其值不确定。

扫描二维码关注公众号,回复: 4685948 查看本文章

static :静态:

       位置:静态区

特点: 程序编译时静态分配,每次调用时不再重新赋初值,保留最后一次调用的值。

二者区别 存储位置不同,

register :寄存器:

位置:在CPU内;

特点:速度快;

补充说明: 一般不用认为进行 存储类 型声明,系统编译时,根据需要自动声明 register 类型)

二、Static:用于变量和函数时的不同意义

1. Static:用于变量时,共性是:静态存储

  (1) 用于外部变量:代表是本*.C文件内私有变量,且静态存储

               其他*.C(即使用extern声明也)不能调用

  (2)用于内部变量:代表是本函数内私有变量,且静态存储

2. Static:用于函数时,代表是本*。C文件私有函数,其他*。C(即使用extern声明也)不能调用

  Static:用于外部变量或函数时,代表作用域;用于内部变量时,代表生存周期

猜你喜欢

转载自blog.csdn.net/ruibin_cao/article/details/84545956
今日推荐