static和extern

控制域和生命周期

 

生命周期跟控制域是不一样的        

                                  static修饰局部变量

 

static修饰局部变量  原本局部变量是在栈区  经过修饰后变为局部静态变量  储存区发生变化变为静态区 生命周期会和程序生命周期一样   而控制域不变还是只能在那个小地方使用 

                     static修饰全局变量 

全局变量虽然控制域和生命周期的范围都是整个程序 但是如果想在程序中的不同文件使用  就需要引用extern去声明

 如上图全局变量需在不同文件中使用需用extern声明使用 

 如果用static修饰全局变量 则全局变量会变为全局静态变量   它只能在自己所在的源文件内使用

                                       static修饰函数

 函数能在整个项目中用,但是在不同文件中用就要跟全局变量一样需要声明(全局变量声明要用到extern ,函数用不用extern进行声明都可以 (因为默认有extern))  

如果用static修饰函数 (该函数被修饰后效果跟全局变量被修饰后效果一样) 都是只能在该文件上使用  

 内存的不同部位

 

 局部变量申请内存在栈区   全局变量申请内存在静态区  静态局部变量申请内存在静态区   而静态全局变量也申请在静态区     函数调用时才会在栈区申请内存    静态函数也是调用时才在栈区申请内存   对于其控制域和生命周期 有以下链接

https://blog.csdn.net/weixin_46928280/article/details/123180847?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169942407316800222883594%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169942407316800222883594&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-123180847-null-null.142^v96^pc_search_result_base6&utm_term=%E9%9D%99%E6%80%81%E5%87%BD%E6%95%B0%E5%AD%98%E5%9C%A8%E5%93%AA%E9%87%8C&spm=1018.2226.3001.4187  

 

 对于函数调用时内存的申请如下(函数内部也会有变量的创建,从而内部会二次开辟空间)

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值