S1E33:生存期和存储类型
#include <stdio.h>//鱼C论坛——BaysideLizard写于2023年11月15日
/*C语言的变量拥有两种生存期:
--静态存储期(static storage duration)
--自动存储期(automatic storage duration)
具有文件作用域的变量 和 函数属于静态存储期。
一直占据内存,直到程序关闭才释放。
代码块作用域的变量一般属于自动存储期。
在代码块结束时将自动释放。
*/
void fun(void);
int main()
{
/*register*/ int i = 100;
//寄存器变量不能取地址。
printf("Addr of i:%p\n",&i);
for(int i = 0;i < 10;i++)
{
fun();
}
return 0;
}
void fun(void)
{
static int count = 0;
//静态局部变量,函数调用结束count不被释放。
printf("count = %d\n",count);
count++;
}
/*C语言提供了5种不同的存储类型
--auto自动变量(代码块中声明的变量默认为auto)
--register寄存器变量(不能取地址)
--static静态局部变量,也默认初始化为0。
--extern关键字用于告诉编译器这个变量或函数在别的地方已经定义过了。
--typedef用于为数据类型定义一个别名。
*/
运行结果:
Addr of i:000000000061FE18
count = 0
count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
Process returned 0 (0x0) execution time : 0.044 s
Press any key to continue.
在FishC学C的第十六天
页:
[1]