C语言自学-变量的作用域、链接和存储期

C语言自学-变量的作用域、链接和存储期

自学C语言一个月左右,前边进行的都还算比较顺利,现在到了比较关键的章节,记录一下,也当记笔记了。主要内容就是变量的作用域、链接和存储期。

1.作用域

作用域,顾名思义,指的是标识符所作用的范围,直白点讲就是程序运行时可以访问到标识符的区域。
作用域主要以下几类:

  • 块作用域**:块一般指{}里的语句,函数居多。作用范围是从定义开始到它所在的块的末尾。
  • 函数作用域**:goto语句,即使他在函数的内层块里,仍然可以作用到整个函数。
  • 函数原型作用域**:用于函数原型的形参名,仅原型语句起作用。
  • 文件作用域**:作用于整个程序或者翻译单元,据此分为外部链接和内部链接文件作用域。
    这里有一个翻译单元的概念,翻译单元是指源代码和它包含的(头)文件(.h文件),即**#include**包含的文件。

2.链接

链接,个人理解链接这个属性和作用域有点类似,它决定标识符或变量能否被其他文件(翻译单元)所用。
主要就3种:

  • 内部链接:在所有函数外定义,加static前缀,只能在翻译单元内使用
  • 外部链接:在所有函数外定义,可被整个程序里所有文件(翻译单元)使用,即 .c 文件;
  • 无链接:所有块作用域、函数作用域、函数原型作用域均属于此类,只能被所在的块、函数私有。

3.存储期

指标识符的生存期。
主要4种:

  • 自动存储期:一般的块作用域均属此类,变长数组例外,暂不深入,块内定义标识符前加static即可变为静态存储期。
  • 线程存储期:用于并发程序,暂不深入;
  • 静态存储期:从创建开始到程序执行期间一直存在,内部文件作用域和外部文件作用域的都具有静态存储期。
  • 动态分配存储期:
    待续。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值