一、几个修饰关键字

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

static:

修饰局部变量:

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

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

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

extern:
           不能修饰局部变量。

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

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

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

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

二、内存分区

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

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

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

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

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

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

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

最新文章

  1. Dapper.NET——轻量ORM
  2. Swift 之模糊效果(毛玻璃效果,虚化效果)的实现
  3. .NET Core 和 .NET Framework 之间的关系
  4. 根据浏览器显示界面大小变换,替换css文件方法
  5. WPF元素可视化效果
  6. js定时相关函数:
  7. MySQL索引分析与优化
  8. JAVA学习随笔-.class
  9. ZooKeeper笔记--集群安装配置 【转】
  10. Emacs颜色设置
  11. java基础知识----IO篇
  12. Jumpserver部署与安装
  13. TLD算法概述--学习理解之(一)
  14. Jmeter Dash Report(HTML Report)删除Hits Per Second graph的方法
  15. 记一次windows服务开发中遇到的问题
  16. C++中模板的特化与偏特化
  17. bzoj 1064 noi2008 假面舞会题解
  18. js计时器方法的使用
  19. 拖拉记录上下移动--Ajax UI
  20. HDU 2586 倍增法求lca

热门文章

  1. (转载)PHP的内存限制 Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in
  2. [liu yanling]软件测试分为哪几个计划过程阶段
  3. Velocity介绍
  4. Farewell, 2015, welcome 2016
  5. Windows Azure -Azure 网站、云服务和虚拟机的对比
  6. 【Java基础】final关键字总结
  7. JAVA_3lesson
  8. 针对C#程序做性能测试的一些基本准则
  9. 【转】C++的继承与多态:为什么需要虚函数
  10. jfinal文件上传和form表单值为null的解决方法