C语言-09

-seventy- / 2023-07-15 / 原文

内存区域的划分(复习)

/*
    内存区域的划分

    1.代码区
        存储代码


    2.常量区
        存储常量


    3.全局区(静态全局区)
        存储: 1.静态变量    2.全局变量

        # include <stdio.h>

        int c;            // 普通全局变量
        static int d;    // 静态全局变量

        int main()
        {
        int a;            // 普通局部变量
        static int b;    // 静态局部变量

        int c;    // 注意这个c不是上面的c,它们只是名字看起来一样而已

        a = 10;        // 普通局部变量没有默认初始值,所以需要自己赋值
        printf("a = %d \n", a);
        printf("b = %d \n", b);
        printf("c = %d \n", c);
        printf("d = %d \n", d);
        // 通过以上 printf,可以总结规律:静态全局区,默认的初始值为0


        // 作用域和生命周期

        作用域            生命周期
        普通全局变量        当前项目        程序开始到程序结束
        静态全局变量        当前文件        程序开始到程序结束
        普通局部变量        当前语块        当前语块
        静态局部变量        当前语块        程序开始到程序结束

        return 0;
        }

        
    4.栈区
        存储:普通局部变量
        从定义时系统自动分配内存,离开当前语块系统就会自动回收内存 


    5.堆区
        由程序员手动申请和释放
*/