BaysideLizard 发表于 2023-11-15 22:58:32

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]
查看完整版本: S1E33:生存期和存储类型