• 网站刚刚上线,难免有不足的地方,敬请谅解!欢迎提出宝贵意见!

  •    3年前 (2015-07-06)  C基础 |   5 条评论  156 
    文章评分 0 次,平均分 0.0

    上一篇我们讲了变量的寿命,知道了C语言的变量是有生命周期的。到了一定的时机它们所占用的内存就会被释放。接下来我们讲讲这些变量都存储在哪些地盘上以及它们各自的势力范围。

    【C语言基础】聊聊C语言(7)-我的地盘我做主

    记得当年小编在看古惑仔时,每个帮派都有自己的名号地盘,洪兴、东星、三联帮、山口组这些名字估计跟小编一个年代的人都还记得。而在C语言中我们也为变量划分好了名号地盘也为它们划分好了势力范围。

    程序中的地盘

    【C语言基础】聊聊C语言(7)-我的地盘我做主

    代码区:存放我们程序代码的地方它是可共享的,并且是只读的。

    数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。

    BSS区:存放的是未初始化的全局变量和静态变量的。

    栈区:由系统自动分配释放,存放函数的参数值、局部变量和返回值的地方,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须我们管理。

    堆区:堆是由malloc()或calloc()函数分配的内存块,使用free()函数来释放内存,堆的申请释放由我们控制,如果我们不小心就会产生内存泄漏。

    【C语言基础】聊聊C语言(7)-我的地盘我做主

    C语言中的四种名号

    auto:只能用来标识局部变量的存储类型,对于局部变量,auto是默认的存储类型,不需要显示的指定,auto标识的变量存储在栈区中,它的势力范围为一对{}内。

    register:声明为register的变量系统会为其选择一个寄存器进行存储,它常驻在CPU的寄存器中,所以register变量将在很大程度上提高效率,因为它省去了由内存调入到寄存器过程中的好几个指令周期,它的势力范围也为一对{}内。

    static:用来声明静态类型的变量,无论是全局的还是局部的,静态类型的变量都存储在数据区中,其生命周期为整个程序。如果是静态局部变量,其势力范围为一对{}内,如果是静态全局变量,其势力范围为当前文件。静态变量如果没有被初始化,则自动初始化为0。静态变量只能够初始化一次。

    extern:用来声明在当前文件中引用但在当前项目中的其它文件中定义的全局变量。如果全局变量未被初始化,则编译时自动初始化为0,存在BBS区中;如果已经初始化,那么存在数据区中。全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中。通常在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。

    【C语言基础】聊聊C语言(7)-我的地盘我做主

    这篇聊聊C语言-我的地盘我做主,就讲到这里。大家有什么不明白的或者有什么意见可以关注下面的微信公众号,我们一起在线讨论。下面是针对这篇小编为留的练习题,请写出每个变量的存储区域及程序的打印结果,答案会在下一篇公布:

    #include<stdio.h>

    int a=1;

    int b;

    int main(void)

    {

    auto int a=2;

    static int c=2;

    {

    int c=3;

    int b=4;

    }

    printf("a=%d b=%d c=%d\n",a,b,c);

    return0;

    }

    下一篇我们开始讲讲C语言的预处理宏定义即聊聊C语言-兵马未动粮草先行,期待大家的捧场。

    大家如果对编程感兴趣,想了解更多的编程知识,解决编程问题,想要系统学习某一种开发知识,我们这里有java高手,C++/C高手,windows/Linux高手,android/ios高手,请大家关注我的微信公众号:程序员互动联盟or coder_online,大牛在线为您提供服务。

    【C语言基础】聊聊C语言(7)-我的地盘我做主

     

    本文原始地址:http://www.coderonline.net/c-language-about-c-language-7-my-site-i-call-the-shots.html

    本站所有文章,除特别注明外,均为本站原创,转载请注明出处来自http://www.coderonline.net/

    否则保留追究法律责任的权利!

    关于

    发表评论

    表情 格式
    1. 比较易愷懂,合适

      MWS 评论达人 LV.1 3年前 (2015-07-26) [0] [0]
    2. 值得一看

      lonely 作 者 3年前 (2015-07-07) [0] [0]
    3. 还有课后作业呢,真贴心。

      leo 评论达人 LV.5 3年前 (2015-07-07) [0] [0]
    4. 这个文章还是不错的,值得一看

      麦子熟了 博 主 3年前 (2015-07-06) [0] [0]
    5. 通俗易懂,图文并茂,很赞,期待连载

      Michael 评论达人 LV.5 3年前 (2015-07-06) [0] [0]
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册