C语言学习日记(5)
7.9变量的存储方式和生存期
从变量的生存期来划分,可分为:
静态存储和动态存储
静态存储区:
全局变量都存放在静态存储区中,在程序开始时分配存储区,执行完毕释放,在执行过程中它们占据固定的存储单元。
动态存储区存放:
1.函数形式参数
2.自动变量
3.调用的现场保护和返回地址等
C的存储类型包括:auto(自动)、static(静态局部)、register(寄存器)、extern(外部)
auto(自动):调用时,系统分配存储空间,调用结束后自动释放。
程序中大多数变量都是自动变量,可省略关键字auto
static(静态局部):调用结束后不会消失且保留原值,占用存储单元不释放,保留为上次调用结束时的值。
#include<stdio.h>
int f(int a)
{
int b = 0;
static int c = 3; //静态局部变量,调用结束后,并不释放,保留当前值
//int c = 3;//自动变量时,结果全为7
b += 1;
c += 1;
return a + b + c;
}
int main() {
int f(int a);
int a = 2, i;
for (i = 0; i < 3; i++)
printf("%d\n", f(a)); //循环调用方法
return 0;
}
例题:求多个数阶乘
#include<stdio.h>
int fac(int n) {
static int f = 1;
f = f * n;
return f;
}
int main() {
int