c语言变量存储方式
动态存储方式(使用时动态分配存储空间,使用结束后释放)
1.auto变量:
c语言规定,函数内未加说明的变量视为自动变量,可以省去说明符auto。
auto变量特点:
作用域仅限模块内,该模块结束释放存储单元;不赋初值,其值不确定
2.register类型变量
静态存储方式(编译时分配存储空间知道程序运行结束)
1.static类型变量:
静态局部变量:函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在函数内访问,退出函数后无法直接访问
static局部变量特点:
未赋初值,系统自动赋0;第二次进入该函数,次变量保留上次调用的值
静态全局变量:
全局变量的介绍在最后面
在全局变量前加static就是静态全局变量,全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
静态全局变量和全局变量的区别:
非静态全局变量的作用域是整个源程序,即在各个源文件有效。而静态全局变量的只在该变量的源文件有效,其他源文件不能访问。由于静态全局变量作用域仅限一个源文件内,只能被该源文件的函数使用。避免了其他源文件引用引起的错误
2.extern类型变量
全局变量:
全局变量的定义是指所有函数之外,只能定义一次,形式为
[extern] 类型说明 变量名,, 如extern int a,其中extern可以省略
全局变量声明,在使用该变量的各个函数内,在整个程序内可以出现多次,形式为:
extern 类型说明 变量名,
全局变量定义和声明的区别:
定义是就分配了内存单元,可以初始化,但声明时不能再赋初始化值,只表明在函数内使用外部变量