变量作用域是指程序中声明的变量在程序的哪些部分是可用的。从变量作用域的角度,变量分为局部变量和全局变量两种
局部变量:在函数或复合语句内部定义的变量。该变量只在本函数或复合语句内部范围内有效。形参也是局部变量。
局部变量有助实现信息隐蔽,即使不同函数中使用了同名变量,也互不影响,因为它们占不同内存单元,就象不同班级有相同姓名的学生一样。这相当于局部变量增加了程序的灵活性和可移植性。
全局变量:在函数体外定义的变量。全局变量的作用域是从它的定义行到整个程序的结束行。
从变量的生存期来分,变量分为静态存储方式和动态存储方式。
静态变量:这种类别的变量在源程序运行期间,从开始到结束的整个过程一直占用固定存储空间。
动态变量:这种类别的变量当进入它的函数或复合语句时才分配存储空间,一旦离开它所在的函数或复合语句则立即释放所占的存储空间。
计算机的内存中储存用户数据的空间分为四部分
第一 栈空间
局部变量 函数形参 自动变量 特点先进后出 系统管理
第二 堆空间
malloc calloc ralloc 特点先进先出 用户管理
第三全局数据区
1 bss 未初始化的全局变量
2 ordata 常量
3 静态数据区 初始化的全局变量 static 修饰变量
第四 代码段
全局变量与局部变量的区别
作用域 全局变量程序结束后释放 局部变量 函数运行结束后释放
储存 全局变量储存在全局数据区的 局部变量储存在栈空间
初始化 全局变量不定义时为0 局部变量为随机分配
当全局变量与局部变量同名时 局部变量起作用