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

一、几个修饰关键字

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

static:

     修饰局部变量:

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

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

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

     extern:
           不能修饰局部变量。

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

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


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

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

二、内存分区

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

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

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

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

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

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

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

 

posted @ 2015-11-06 18:02  祁临芯  阅读(330)  评论(0编辑  收藏  举报
友情链接:初心商城