C程序设计笔记 第七章 局部变量vs全局变量,动态存储vs静态存储

一、从变量作用域角度划分,变量可分为局部变量和全局变量。

1、局部变量是定义与函数内的变量,作用域是其定义时所在大括号范围内,出了作用域其占用的内存单元就会被释放掉。

2、全局变量是定义于函数外的变量,作用域是从定义位置开始直至文件末尾。(一般为了易于区分,将全局变量首字母大写)。

3、局部变量a可以与全局变量a同名,在局部变量作用域中,同名全局变量会被屏蔽,即引用a是使用局部变量。(强龙难压地头蛇)

 

二、从变量生存期角度划分,可分为动态存储方式和静态存储方式

内存中用户区存储空间可分为三部分:

程序区、

静态存储区(全局变量)、

动态存储区(函数参数、函数中的自动变量、函数调用时的现场保护和返回地址等)

 

局部变量有两种存储方式:

1、在前面加上static,使用静态存储方式:编译时进行初始化,函数结束后不释放内存单元,一直保持已有的值。下一次调用时不执行初始化语句,继续使用之前保留的值。

2、在前面加上auto(前面什么都不加就是默认auto),使用动态存储方式,函数调用时初始化并分配存储空间,函数结束时释放存储空间。

 

全局变量都使用静态存储方式

外部变量(全局变量)的作用域:

一个C程序包含多个源程序文件时,不同文件不能命名同名的外部变量。

1、文件2引用文件1中外部变量的方法:

file1.c

int A;

...

 

file2.c

extern A;//将file1中已定义的外部变量的作用域扩展至本文件

...

 

2、将外部变量作用域限制在本文件中,只需加上static即可

static int A;

这叫静态外部变量

猜你喜欢

转载自blog.csdn.net/weixin_41519463/article/details/88423931
今日推荐