变量分类及其特点

普通全局变量

   1.生命周期:程序开始运行是创建,程序结束时才销毁

   2.作用域:定义开始直到本源文件结束,(不安全)普通全局变量的作用域是整个源程序,当一个源程序由多个原文件组成             时,普通的全局变量在各个源文件中都是有效的。如果想在别的文件中访问可以加上extern声明                      https://www.cnblogs.com/mch0dm1n/p/5727667.html(extern知识??)

   3.默认值:为0

   4.连接属性:外部

   5.内存区域:全局区

静态全局变量

     static全局变量初始化语句只执行一次一次

   1.生命周期:程序开始运行是创建,程序结束时才销毁

   2.作用域:定义开始直到本文件结束,(不安全)而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在         同一源程序的其它源文件中不能使用它。静态全局变量就是用来解决重名问题的

   3.默认值:为0

   4.连接属性:内部

   5.内存区域:全局区

普通局部变量

   1.生命周期:进入函数时创建,函数结束时销毁

   2.作用域:本函数内有效

   3.默认值:随机值

   4.连接属性:无

   5.内存区域:栈

静态局部变量

   1.生命周期:进入函数时创建,函数结束时销毁

   2.作用域:不死  ??

   3.默认值:为0

   4.连接属性:无

   5.内存区域:全局区

动态内存

   1.生命周期:通过malloc函数创建,free释放

   2.作用域:能获得就能用

   3.默认值:随机

   4.连接属性:无

   5.内存区域:堆

普通函数

   1.生命周期:

   2.作用域:对于可在当前源文件以外使用的函数应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

   3.默认值:无

   4.连接属性:无

   5.内存区域:代码段

静态函数

   1.生命周期:

   2.作用域:只在当前源文件中使用的函数

   3.默认值:无

   4.连接属性:无

   5.内存区域:代码段

static函数与普通函数最主要区别是static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝程序的局部变量存在于(栈)中

对于一个完整的程序:内存分布有如下几个区、栈区、堆区、全局区、常量区、代码区。 

猜你喜欢

转载自blog.csdn.net/zkk258369/article/details/84316997