• c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区


    一、几个修饰关键字

    全局变量:
    全局变量跟函数一样也分为声明和实现。如果是全局变量,实现在它调用之后,那么需要在调用之前进行声明。
    注意:全局变量的声明只能写在函数外,写在函数就不是全局变量了而是局部变量。

    static:

         修饰局部变量:

            可以把局部变量变为静态变量。意思就是:程序一启动就加载,程序退出才会回收空间(跟全局变量很像) 。

          静态变量:用static修饰的局部变量就叫静态变量。

         修饰全局变量:
                让全局变量只能在本模块中访问。
         修饰函数:
                修饰函数的话,只能在本模块中访问。

         extern:
               不能修饰局部变量。

              修饰全局变量:
                     让全局变量在所有模块中都能访问。

              修饰函数:
                     extern修饰函数,代表所有模块都能访问。它是默认的(不写就是extern)


    以下两个都只能修饰局部变量。
           auto(了解):默认的,交给系统自动管理内存(放在栈区),就是什么时候开辟,什么时候回收,系统管理。
           register(了解):把变量加到寄存器。寄存器就是CPU临时保存数据的地方,特点是:非常快,但是容量小,造价金贵,所以只能保存极少的数据。

    后编译时代,意思就是编译器在编译的时候会自动根据你代码进行优化,编译器帮你判断什么时候用auto,什么时候用register

    二、内存分区

          栈区: 所有局部的变量,由系统自动管理,出了作用域就回收

          堆区: 程序员自己申请开辟的空间,都是在堆区,程序员自己维护回收

          全局区: 所有的全局变量和静态变量,程序一启动就开辟,程序退出才回收
                 bss段和data段
                 bss段保存的是所有未初始化的全局变量和静态变量(只是记录一下,记录有多大)
                 data段保存的是所有已初始化的全局变量和静态变量

          常量区:rodata段。就是所有的常量。文本常量(字符串),程序一启动就开辟,程序退出才回收

          代码区:就是编译后的二进制代码。程序一启动就开辟,程序退出才回收
          text段

    从上往下,地址是从高到低

    只需要记住:每个区分别放的是什么东西就行了。

  • 相关阅读:
    Zookeeper 记录
    Eureka 分析记录
    Hbase 学习记录
    小技巧 Mongodb 动态查询 除去 _class 条件
    科技的继续发展会带给我们什么?
    无限拓展热区域缓存服务方案
    Git 的 4 个阶段的撤销更改
    自动化运维利器 Fabric
    Linux Shell 文本处理工具
    如何在 Linux 中找出 CPU 占用高的进程
  • 原文地址:https://www.cnblogs.com/bobo-pcb/p/4943309.html
Copyright © 2020-2023  润新知