静态变量static/动态变量auto的区别:
1.静态变量:
#include <stdio.h>
#include <stdlib.h>
long Func(int n);
int main()
{
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%d! = %ld\n",i,Func(i));
}
return 0;
}
long Func(int n)
{
static long p = 1; //只在第一次被调用时,被初始化为1,以后其值被保存在静态存储区不变直到被改写
p = p*n;
return p;
}
结果如图:
2.动态变量:
#include <stdio.h>
#include <stdlib.h>
long Func(int n);
int main()
{
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%d! = %ld\n",i,Func(i));
}
return 0;
}
long Func(int n)
{
auto long p = 1; //每次执行都被初始化为1
p = p*n;
return p;
}
执行结果如下:
来自哈尔滨工业大学MOOC课件