《C程序设计 》谭浩强 变量的存储方式和生命周期

这是对谭浩强版 变量 存储 和生命周期的总结

主要知识点有如下:
1.变量分为:
全局变量、局部变量
按照作用域的角度:可以这样划分这两种变量:

  • 局部变量:
    • 自动变量 Auto (就是最普通的我们用的局部变量 )
    • 静态局部变量 )
    • 寄存器变量 (register关键字,存储位置在CPU中 方便程序使用的时候 不必反复在内存中调入调出,但是现在编译器已经很智能了,可以自己检测到,就会把它们放在CPU中 编程人员一般不必自己定义)
  • 全局变量
    • 静态外部变量 (关键字 static ,写法与静态局部变量相同,但是出现的位置不同,以及用法不同)
    • 外部变量(extern 关键字的,允许其他文件引用)

2.内存中供用户使用的存储空间分为:

  • 程序区
  • 静态存储区
  • 动态存储区
    数据主要是放在了静态存储区和动态存储区(这里按照变量值的存放位置来分类)
    那么静态存储区和动态存储区各自放了哪些东西呢:
    • 静态存储区:
      • 静态局部变量(函数内有效)
      • 静态外部变量 (本文件内有效)
      • 外部变量
  • 动态存储区
    • 自动变量
    • 形参!!感觉知道这个知识点对于理解 后面的指针有帮助
  • 刚刚提到的寄存器变量,它是动态存储的,但是位置却不是内存中的动态存储区,而是CPU中

3、那么从变量的时间(生存期)来区分的话(就是动态存储还是静态存储)也可以对变量进行分类,主要是掌握生存期这个知识点:

  • 静态存储:是程序整个运行时间都存在
    • 即 静态局部变量、静态外部变量、外部变量
  • 动态存储是调用函数时临时分配内存单元
    • 即 自动变量、寄存器变量、形参

4.补充点:静态局部变量与静态外部变量的异同:

  • 我自己的理解

    • 同:它俩在定义的时候是一样的,按照变量的生存期都是静态存储的方式;
    • 异:出现的位置不一样,静态局部变量是在函数体中的,这一点见名知意。
      • 静态局部变量在使用的时候,只给它赋一次初值 ,以后再改变的时候每次变的那个值都会保留在内存中,对于阶乘等运算十分便利;
      • 静态外部变量的出现,就是告诉操作系统,只有本文件可以使用这个变量,防止别的文件误用。
  • 并不是因为加了static 才使这两个变量存放在内存中的静态存储区的。对于全局变量来说,都是在编译时分配内存的,都存放在静态存储区。

  • 声明存储类型是变量作用域的扩展问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值