【例7-13】变量的存储类型

(二)变量
变量的存储类型:"动态储存"、"静态储存"。
1.动态储存变量:在程序执行过程中,函数调用它时才分配存储单元,使用完毕立即释放,多次
                调用,则反复分配和释放存储单元。
属于动态储存变量的储存类型有:auto(自动变量)、register(寄存器变量)。
(1)auto(自动变量):auto变量均为局部变量,在赋初值前,其值是不确定的。对于同一函数两次
   调用之间,自动变量的值不保留,因为动态存储变量多次调用时,反复分配和释放存储单元。
(2)register(寄存器变量):该类型变量是直接存储在CPU中的寄存器中,所以访问速度极快。
   不同系统对register 变量个数有限制。

2.静态储存变量:在程序编译时就分配存储单元并一直保持不变,直到整个程序结束。
属于静态储存变量的储存类型有:extern(全局变量)、static(静态变量)。
(1)extern(全局变量):在程序编译时就分配存储单元直至程序结束,没有初始化的全局变量,默认初始值为0。
(2)static(静态变量):静态变量通常做局部变量,在编译时分配存储空间,若不初始化,默认初始值为0;对于函数多次调用中,静态变量具有继承性,即本次调用的初值是上次调用结束时变量的值。

定义变量的完整形式为:
存储类型说明符 数据类型说明符 变量名1,变量名2,…;

//变量的存储类型演示:static
利用static静态变量的"保值"功能求1!+2!+3!+…+n!

#include<stdio.h>
int fac(int n)
{
	static int t = 1;	//static类型变量的值具有继承性
	t = t * n;		//当实参为i=1,t=1*1;i=2,t=1*2;i=3,t=2*3;i=4,t=6*4;i=5,t=24*5
	return t;
}
int main()
{
	int i, n, sum = 0;
	printf("求1!+2!+3!+…+n!,请输入n的值:");
	scanf_s("%d", &n);
	for (i = 1; i <= n; i++)	//假设n=5
	{
		sum = sum + fac(i);		//for 循环,sum=sum+t
	}	//i=1,sum=0+1;i=2,sum=1+2;i=3,sum=3+6;i=4,sum=9+24;i=5,sum=33+120
	printf("计算结果为:%d", sum);

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值