前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >static和extern

static和extern

作者头像
E绵绵
发布2024-04-08 20:53:56
1120
发布2024-04-08 20:53:56
举报
文章被收录于专栏:编程学习之路

控制域和生命周期

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 控制域和生命周期
  • static修饰局部变量
  • static修饰全局变量
  • static修饰函数
  • 内存的不同部位
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档