c高级c存储类型

c高级 存储类、链接、内存管理

存储模型

对程序中数据存储空间的抽象。

  1. 静态存储,一直都在,直到程序完蛋;

  2. 动态,用就申请,搞完就甩了,例如函数形参那个悲惨的家伙,用完后,就没有然后了。

具体分类

  1. auto 奥拓,不摆了;

  2. register:暗示编译器要频繁使用,快,最好放在CPU寄存器中,但也是暗示,给不给也不一定。

    全局变量不能暗示。
    
  3. 静态、空链接

    与动态不同之处:

    • 编译完后就分配储存空间了

    • 静态默认自动初始化为0;动态默认不自动初始化,随机值。

    静态变量区别:

    • 静态局部变量:局部完成后,空间不释放,直到程序完了。且函数或者代码块之外的不能访问;

    • 静态全局变量:全局使用,直到程序玩完。

      • 因此,当调用一个函数且要求调用之前保留某些变量的值时,可以考虑静态局部

      这里:当static用在不同变量上的效果不同哦:

      *用在局部变量,延长寿命;*
      
      *用在全局变量,改变作用域;*
      

链接属性

组成一个程序的各个源文件分别被编译之后,所有目标文件以及函数库中的相同变量,如何区别?这就用到了链接属性;

  1. 空链接

    即代码块或函数中的变量,作用域只是当前模块,不具有链接性的就是空链接啦。嘻嘻

  2. 内部关系:

    static声明的全局变量,作用域为当前文件。文件内部随便搞。内部福利!嘻嘻

    而static声明的局部变量,则是让它成为静态变量,延长生命咯,直到程序结束。

  3. 外部链接:

    全局变量,默认的就是外部链接啦,除非加上了static变为静态全局。在外部的函数中使用前,使用extern一下就可以。大家一起搞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MichaelJay2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值