博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区
阅读量:7017 次
发布时间:2019-06-28

本文共 896 字,大约阅读时间需要 2 分钟。

一、几个修饰关键字

全局变量:

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

     修饰局部变量:

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

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

     修饰全局变量:

            让全局变量只能在本模块中访问。
     修饰函数:
            修饰函数的话,只能在本模块中访问。
     extern:
           不能修饰局部变量。
          修饰全局变量:
                 让全局变量在所有模块中都能访问。
          修饰函数:
                 extern修饰函数,代表所有模块都能访问。它是默认的(不写就是extern)

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

二、内存分区

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

      堆区: 程序员自己申请开辟的空间,都是在堆区,程序员自己维护回收
      全局区: 所有的全局变量和静态变量,程序一启动就开辟,程序退出才回收
             bss段和data段
             bss段保存的是所有未初始化的全局变量和静态变量(只是记录一下,记录有多大)
             data段保存的是所有已初始化的全局变量和静态变量
      常量区:rodata段。就是所有的常量。文本常量(字符串),程序一启动就开辟,程序退出才回收
      代码区:就是编译后的二进制代码。程序一启动就开辟,程序退出才回收
      text段

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

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

 

转载于:https://www.cnblogs.com/bobo-pcb/p/4943309.html

你可能感兴趣的文章
枚举NT系统用户
查看>>
任务,过程,和线程
查看>>
(原創) 令人期待的C# 3.0/LINQ (.NET) (C#)
查看>>
delphi 通过线程实现Windows服务
查看>>
育儿:自制身高仪和照片墙
查看>>
QT槽和信号机制介绍
查看>>
[例程]string.trim().length()的用法
查看>>
电子书下载:Microsoft Windows Identity Foundation Cookbook
查看>>
ORACLE修改表空间方法
查看>>
敏捷本质:价值驱动、拥抱变化
查看>>
TOGAF:企业信息化复杂吗?
查看>>
【Asp.Net使用EasyUI】EasyUI combox实现联动
查看>>
C盘空间不够,清除VS下的 Font Cache
查看>>
List 比较大小
查看>>
栈上数组,做了什么事?
查看>>
YU-GI-OH! POWER OF XLINQ [C#, XLINQ, XML]
查看>>
Android String 转 MD5
查看>>
PDCA模型的学习
查看>>
list排序成员函数对string对象与char*对象排序的差别
查看>>
IBM Java多线程 - 7.结束语和参考资料
查看>>