全国计算机等级考试二级教程-C语言程序设计_第12章_C语言中用户标识符的作用域和存储类

生命周期的概念,也就是生存期,仅仅适用于变量。

代码、常量、定义等等都是与程序共存亡的,他们的生命周期就是程序的生命周期。

静态分配:生命周期是整个程序执行周期,内存会一直存在,在main函数执行之前就创建,无论函数如何运行、如何调用,内存一直不会被回收,一直到程序结束才被程序回收。

自动分配:就是在栈上,系统自动回收清理,函数调用的时候,从定义的地方开始创建,函数结束的时候,系统自动进行回收。

动态分配:生存期就是从malloc开始,从free结束。

 

例12.1

以下函数 power() 用以计算 x^n。

 1 #include <stdio.h>
 2 int power(int, register int);
 3 main()
 4 {
 5     int s;
 6     s = power(5, 3);
 7     printf("%d
", s);
 8 }
 9 int power(int x, register int n)
10 {
11     register int p = 1;
12     while (n)
13     {
14         p = p*x;
15         n--;
16     }
17     return p;
18 }

例12.2

有下列程序:

 1 #include <stdio.h>
 2 int sum;        /* 定义全局变量 */
 3 void fun(void);
 4 main()
 5 {
 6     sum = 10;
 7     printf("* * main(1) * *:%d
", sum);
 8     fun();
 9     printf("* * main(2) * *:%d
", sum);
10 }
11 void fun(void)
12 {
13     int sum;        /* 定义同名局部变量 */
14     sum = 20;
15     printf("* * fun * *:%d
", sum);
16 }

以上程序运行时输出结果如下:

* * main(1) * *:10
* * fun * *:20
* * main(2) * *:10
请按任意键继续. . .

原文地址:https://www.cnblogs.com/denggelin/p/5428581.html