1、C语言中每个变量都有3个性质:存储期限、作用域、链接

1)存储期限:变量的存储期限决定了为变量预留的内存被释放的时间。共2种,自动存储期限(auto),静态存储期限(static),自动存储(auto)的变量在所属块被执行时获得内存单元,并在块终止时释放内存单元,自动的获得或释放内存,故名auto。具有静态存储的变量(static)在程序运行期间始终占有同一内存单元,静止不变,故名static。

2)作用域:变量的作用域指可以使用该变量的那一部分程序文本。共2种,块作用域指从声明位置到所在块的末尾均可见,文件作用域指从声明的地方到文件的末尾均可见。

3)链接:变量的链接指程序的不同部分可以共享此变量。共3种,外部链接指可以被程序中不同文件共享,内部链接指只属于单独一个文件,无链接指属于单独一个函数,而且根本不能被共享。

2、变量的默认存储期限、作用域、链接均依赖于变量的声明位置。

1)在块内声明的变量:自动存储期限、块作用域、无链接。

2)在程序最外层(任意块外部)声明的变量:静态存储期限、文件作用域、外部链接。

int i;  //静态存储,文件作用域,外部链接
void f(void){
INT J; //自动存储,块作用域,无链接
}

3、static的特殊用途:

1)当在块外部,static说明变量为内部链接,注意:本来在块外部声明的变量具有外部链接,加上static后,变为内部链接,则外部不可见了。

2)当在块内部,static说明变量的存储期限为静态,注意:本来在块内部变量为自动存储期限。

static int i;   //静态存储期限,文件作用域,内部链接
void f(void){
static int j; //静态存储,块作用域,无链接
}

最新文章

  1. freeswitch嵌入python脚本
  2. window对象的属性及事件。
  3. makefile之变量赋值
  4. Mutual Training for Wannafly Union #1解题报告
  5. [Json.net]快速入门
  6. mysql命令分类(DML、DDL、DCL)
  7. 查看centos中的用户和用户组
  8. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
  9. [Linux]Linux 下的 Docker 安装与使用
  10. ubuntu下定时任务的执行
  11. mysql:Cannot proceed because system tables used by Event Scheduler were found damaged at server start
  12. VS2010:“error C2712: 无法在要求对象展开的函数中使用 __try”
  13. 关于 php json float 出现很多位的问题
  14. NPM(Node Package Manager,Node包管理器)
  15. BG.Hadoop.Master
  16. SQLAlchemy-方言(Dialects)
  17. css常用标签及属性
  18. 构建命令maven install 打包不是最新的代码
  19. 洛谷P2196 挖地雷(dp)
  20. JavaScript数据结构-树

热门文章

  1. client怎样调用IBinder接口对象
  2. pytest文档2-用例运行规则
  3. easyui datagrid checkbox multiple columns have been done do
  4. Hive QL——深入浅出学Hive
  5. iOS开源项目:UIDevice-with-UniqueIdentifier-for-iOS-5
  6. 数学图形(1.34) peut aussi曲线
  7. .net非托管资源的回收
  8. Mapper 与 Reducer 解析
  9. (C++)虚函数表解析(转)
  10. Wifidog及认证过程初分析