c语言中的static和c++中的static比较

c语言中:

static如果是修饰的全局变量表示,该变量不能被其他文件使用,函数也是一样.如果修饰局部变量,那么,该变量存放在静态区,只能被初始化一次,生命周期随之文件的结束而结束.

c++中:

static修饰的变量,只能在类外初始化,而且,必须初始化,可以由类直接访问,可以在同族类中实现数据共享,在类中没有存储空间

class school {
public:
    school(){
    }
public:
    string tower;
    string lake;
    static string lib;
};
school::lib("weifang");
int main(int argc, char *argv[]) {
     school a, b;
     
     cout<<sizeof(a)<<sizeof(b)<<endl;       
}
static 变量在类外声明,sizeof(a), sizeof(a)的值都是8,没有把lib所占用的空间算在内.


不要因为c和c++有一些语法或者关键字看上去相同,就认为他们的意义和作用是一样的.


顺便提一下volatile变量,防止编译器优化,很多人只是知道这句话,却不知道实际意思,我说一下我的理解,就是告诉编译器,被volatile修饰的变量,以后再用时,不要从寄存器或者cache中获取拷贝,而是直接从变量地址处获取变量值,还有和extern 一起用, extern volatile,volatile告诉编译器,我这个值可能会随时在其他文件发生修改,不要从缓存区取值.


先写这么多吧,以后有了新的认识再添加,

希望大家有什么意见的或者我写的不对的即使提出或者帮我纠正,谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值