暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

C语言基础开发[拾]

小柯南有话说 2021-09-06
232

内存分区:代码区 数据区

•编译器会为程序开辟所使用的内存空间。

•程序要素分别存储在:代码区
数据区

•代码区放在只读区,数据放在可读可写区。


代码区

•存放CPU执行的机器指令

•共享(生成一份exe文件)

•只读(防止程序被意外修改指令)

      代码一旦编写完毕,运行过程中不允许任意修改,为了保护代码,在设计的时候,代码就放在只读的内存区域,存放代码的区域叫做代码区。


数据区

栈区:

存放函数参数值和局部变量,由编译器自动分配和释放 可读可写

全局/静态区:

存放全局变量,静态变量(静态全局,静态局部) 可读可写

字符串常量区:

字符串常量,程序运行之前创建,运行之后销毁,只读不可修改

堆区:

由程序员调用malloc()
函数
来主动申请的,需使用free()
函数
来释放内存,若申请了堆区内存,之后忘记释放内存,很容易造成内存泄漏。



全局变量与局部变量

    #include <stdio.h>
    int p1 = 10;
    //p1全局变量,可以在任何地方被使用,可以在main函数中使用,也可以在a函数中使用。
    void a() {
    int p1 = 30;//p1为局部变量,只能在花括号内部被使用
    printf("%d", p1);
    };
    int main() {
      int p1=20;//p1为局部变量,只能在花括号内部被使用
      printf("%d\n", p1);
    a();
    return 0;
    }

    全局变量与局部变量区别

    •全局变量保存在内存的全局存储区中,占用静态的存储单元;

    •局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

    1.作用域不同

    全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

    • 2.内存存储方式不同

    全局变量存储在全局数据区中,局部变量存储在栈区

    3.生命期不同

    全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。

    4.使用方式不同

    全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用

    函数内部会优先使用局部变量再使用全局变量

      #include <stdio.h>
      int p1 = 10;
      void a() {
      int p1 = 30;
      printf("%d", p1);
      };
      int main() {
      a();//输出的值为30
      return 0;
      }


      文章转载自小柯南有话说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论