鱼C论坛

 找回密码
 立即注册
查看: 7325|回复: 19

[知识点备忘] S1E33:生存期和存储类型

[复制链接]
发表于 2016-11-10 02:55:01 | 显示全部楼层 |阅读模式
购买主题 已有 14 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-12 13:43:41 | 显示全部楼层
本帖最后由 一轮江月明 于 2017-4-12 13:46 编辑

大家简单看下,官方的还要等小甲鱼老师更新啊~~~


C语言的变量拥有两种生存期
静态存储期(static storage duration)
自动存储期(automatic storage duration)  

具有文件作用域的变量属于静态存储期,函数也属于静态存储期。属于静态存储期的变量在程序执行期间将一直占据存储空间,直到程序关闭才释放。 具有代码块作用域的变量一般情况下属于自动存储期。属于自动存储期的变量在代码块结束时将自动释放存储空间。

存储类型
存储类型其实是指存储变量值的内存类型,
C语言提供了5种不同的存储类型:
auto
register
static
extern
typedef

自动变量(auto)
在代码块中声明的变量默认的存储类型就是自动变量,使用关键字auto来描述。 由于这是默认的存储类型,所以不写auto是完全没问题的。

寄存器变量(register)
将一个变量声明为寄存器变量,那么该变量就有可能被存放于CPU的寄存器中。  寄存器变量和自动变量在很多方面的是一样的,它们都拥有代码块作用域,自动存储期和空连接属性。  不过这里有一点需要注意的是:当你将变量声明为寄存器变量,那么你就没办法通过取址运算符获得该变量的地址。

静态局部变量(static)
使用static来声明局部变量,那么就可以将局部变量指定为静态局部变量。  static使得局部变量具有静态存储期,所以它的生存期与全局变量一样,直到程序结束才释放

static和extern
作用于文件作用域的static和extern,static关键字使得默认具有external链接属性的标识符变成internal链接属性,而extern关键字是用于告诉编译器这个变量或函数在别的地方已经定义过了,先去别的地方找找,不要急着报错。

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5 点个赞!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 7 反对 0

使用道具 举报

发表于 2018-9-1 10:47:26 | 显示全部楼层
怎么样才算程序结束呢?比如我定义了一个函数,在主函数初始化中调用,初始化完之后算不散程序结束呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-19 18:19:28 | 显示全部楼层
又没仔细听课  来这里看知识点了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-19 23:04:30 | 显示全部楼层
好了   玩到晚上也没复习  先睡了  明天复习  辛苦小甲鱼老师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-20 11:46:37 | 显示全部楼层
起床起晚了   来复习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-8-20 16:09:57 | 显示全部楼层
玩玩学学的我   来打卡复习这块知识了    辛苦小甲鱼老师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-18 15:15:20 | 显示全部楼层
没时间啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 11:24:46 | 显示全部楼层
作用于文件作用域的 static 和 extern,我们上一节已经讲过了,static 关键字使得默认具有 external 链接属性的标识符变成 internal 链接属性,而 extern 关键字是用于告诉编译器这个变量或函数在别的地方已经定义过了,先去别的地方找找,不要急着报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 11:09:21 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-17 22:53:32 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-11 16:36:18 From FishC Mobile | 显示全部楼层
还是在铺垫哦,看来接下来是大货喽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 16:45:55 From FishC Mobile | 显示全部楼层
话说typedef咋没说呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 16:44:53 | 显示全部楼层
YT胡子 发表于 2018-9-1 10:47
怎么样才算程序结束呢?比如我定义了一个函数,在主函数初始化中调用,初始化完之后算不散程序结束呢?

就是程序执行完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-19 12:29:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-2 17:42:23 | 显示全部楼层
好好学习才能天天向上!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 22:40:37 | 显示全部楼层
这个怎么没人学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 22:41:08 | 显示全部楼层
我要考研
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-14 20:03:57 | 显示全部楼层
.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-24 12:43:22 | 显示全部楼层
最后一个程序在dev C++里面怎么实现呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 17:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表