欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

局部变量的存储类别:自动变量和静态变量

程序员文章站 2022-04-18 18:50:02
...

① auto(自动变量)

在调用函数时,系统会给这些变量分配储存空间,调用结束后就自动释放这些储存空间。

实际上,在定义自动变量时,关键字“auto”可以省略。不写“auto”则默认为“自动储存类别”。

② static(静态局部变量)

函数中的静态局部变量在函数调用结束后不消失且继续保留原值,占用的储存单元不释放。

eg:使用静态局部变量求分别输出n的一次方到n的n次方

#include <stdio.h>
int main()
{
	int n,i;
	int f(int);
	printf("请输入n的值\n");
	scanf("%d",&n);
	printf("结果为:\n");
	for(i=0;i<n;i++)
		printf("%d的%d次方=%d\n",n,i+1,f(n));
	return 0;
}
int f(int n)
{
	static int a=1;      //声明a为静态存储局部变量
	a*=n;
	return a;
}

局部变量的存储类别:自动变量和静态变量

而如果定义a时将static去掉(即定义为自动局部变量)

int f(int n)
{
	int a=1;
	a*=n;
	return a;
}

结果为:

局部变量的存储类别:自动变量和静态变量

出错!