C语言 第二十三节 枚举

//一,变量的作用域
1,局部变量 :
1,函数内部定义的变量
2,只在定义它的函数内部有效

2,全局变量
	1,在所有函数外部定义的变量
	2,从定义变量的位置开始到源程序结束
	
int a;//全局变量 
int main()
{
	int b;//局部变量 
	return 0;
 } 

//二,变量存储类型
1,变量存储的地方
普通内存,运行时堆栈,硬件寄存器
2,决定:
变量何时创建,何时销毁,值能保存多久。
3,分为 :
自动变量,静态变量,寄存器变量
1,自动变量
1,存储在堆栈中
2,auot修饰的局部变量都是自动变量,局部变量默认情况下都是自动变量
3,程序执行到此代码块,自动变量被创建。
此代码块执行完毕,自动变量自行销毁。
函数被重复调用,自动变量每次都创建
void test(int a,int b)//a,b自动变量
{
int c = a+b;//c自动变量
auto int d;//d自动变量
}

		2,静态变量
			1,存储在静态变量中,也就是不属于堆栈
			2,所有全局变量,
				关键字 static 修饰的局部变量
			3,程序运行之前创建,程序运行期间始终存在,直到程序结束
		#include <stdio.h>
		int a;//a静态变量 
		
		void test()
		{
			
		static int b=0;//b静态变量 ,创建一次,延续到程序结束。本行只执行一次,下次调用test函数时,b不会初始化。 
		b++;
		
		int c = 0;//c自动变量 
		c++; 
		
		printf("b=%d,c=%d\n",b,c)	
		} 
		
		int main(){
			int i;//i自动变量 
			for(i=0;i<3;i++){
			
			test();
		}
		}
		
		3,寄存器变量
			1,存储在硬件寄存器中的变量
			 	比存储在内存中的变量访问效率高
			2,关键字register修饰的自动变量,
				仅自动变量才可以是寄存变量,全局变量和静态局部变量不行。
			
				寄存器变量只限于int,char,指针类型变量使用。
				
			3,	函数中的寄存器变量在调用该函数时占用寄存器中存放的值,
				当函数结束时释放寄存器,变量消失。 
		4,使用注意
			1,寄存器数目有限,寄存变量不能使用太多。
				寄存器使用饱和时,程序将寄存变量转换为自动变量。
			2,频繁使用的自动变量定义为寄存变量,提高运算速度。
		int main(){
			register int a;//a为寄存变量 
			return 0;
		} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值