目录
题目
学习使用static的另一用法
问题分析
块内声明的static变量在程序执行期间驻留在同一存储单元内。和每次程序离开所在块就会丢失值的自动变量不同,static变量会无限期地保留值。static变量具有以下一些有趣的性质:
·块内的static变量只在程序执行前进行依次初始化,而auto变量则会在每次出现时进行初始化(需要假设它有初始化式)
·每次函数被递归调用时,它都会获得一组新的auto变量。但是,如果函数含有static变量,那么此函数的全部调用都可以共享这个static变量。
·虽然函数不应该返回auto变量的指针,但是函数返回指向static变量的指针是没有错误的。
代码
#include "stdio.h"
main()
{
int i, num;
num = 2;
for (i = 0;i < 3;i++)
{
printf("\40: The num equal %d \n", num);
num++;
{
static int num = 1;
printf("\40:The internal block num equal %d\n", num);
num++;
}
}
}
运行结果