C语言变量的类型和储存方式
变量的作用域:变量的有效范围
》局部变量
1.函数内局部变量,这个变量在该函数结束后自动撤销
2.函数内的复合语句中的局部变量(比如for语句),这个变量在复合语句结束后自动撤销,这个变量可以与1中的变量重名,在复合语句作用域中里面定义的变量权限更高,考虑到可读性不推荐这么做
例如:
#include<stdio.h> #include<stdlib.h> void fun1(); int main() { fun1(); } void fun1() { int m=200; int i=0; for(i=0;i<1;i++) { int m=5; printf("%d",m); } printf("%d\n",m); system("pause"); } //输出结果为:5 200
》全局变量
定义在所有函数外部的变量,需要注意和区分的是变量的定义和声明,只要在所有函数外面定义的变量就是全局变量 ,所以这个变量不一定在一个文件的最前面几行代码,如果这个变量定义在一个函数的后面,而这个函数需要用到这个变量,那么这个变量就需在这个函数之前声明或者在这个函数内部声明方可使用,如果这个变量定在这个函数的前面,那么可以省去声明,
定义一个变量的一般形式:extern 类型说明符 变量名 (比如:int a ,在定义的时候extern可以省略,)
声明一个变量的一般形式:extern 类型说明符 变量名 (声明变量时extern不可以省略,)
变量的储存方式:储存方式决定了函数的生存期
》静态储存
》动态储存
静态变量之全局和局部
》静态局部变量
》静态全局变量
需要注意的是 静态全局变量 和非静态全局变量(全局变量)
一个程序往往有很多源代码,一个源文件中包含了另外一个源代码文件,
总结来说就是:全局变量在所有包含了它的源文件中均有效,而静态全局变量只有在定义它的源文件中有效,
总结论:把局部变量改为静态变量后改变了它的储存方式,即改变了它的生存周期;把全局变量改为静态变量后改变了它的作用域,限制了它的使用范围
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。