小甲鱼 发表于 2016-11-10 02:55:01

已有 18 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

一轮江月明 发表于 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关键字是用于告诉编译器这个变量或函数在别的地方已经定义过了,先去别的地方找找,不要急着报错。

YT胡子 发表于 2018-9-1 10:47:26

怎么样才算程序结束呢?比如我定义了一个函数,在主函数初始化中调用,初始化完之后算不散程序结束呢?

敌敌畏迪迪卫 发表于 2019-8-19 18:19:28

{:10_266:}{:10_266:}{:10_266:}又没仔细听课来这里看知识点了{:10_266:}{:10_266:}{:10_266:}

敌敌畏迪迪卫 发表于 2019-8-19 23:04:30

好了   玩到晚上也没复习先睡了明天复习辛苦小甲鱼老师{:10_266:}{:10_266:}{:10_266:}

敌敌畏迪迪卫 发表于 2019-8-20 11:46:37

{:10_266:}{:10_266:}{:10_266:}起床起晚了   来复习了

敌敌畏迪迪卫 发表于 2019-8-20 16:09:57

{:10_266:}{:10_266:}{:10_266:}玩玩学学的我   来打卡复习这块知识了    辛苦小甲鱼老师{:10_298:}

xztzz 发表于 2019-10-18 15:15:20

{:10_266:}{:10_266:}{:10_266:}没时间啦

Draem 发表于 2020-3-27 11:24:46

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

guad268 发表于 2020-8-22 11:09:21

打卡

学C的大叔 发表于 2021-3-17 22:53:32

打卡

努力的松 发表于 2021-8-11 16:36:18

还是在铺垫哦,看来接下来是大货喽

努力的松 发表于 2021-8-11 16:45:55

话说typedef咋没说呢

番杰 发表于 2021-9-10 16:44:53

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

就是程序执行完了

HandsonYe 发表于 2022-3-19 12:29:17

{:10_340:}

Puppet16 发表于 2022-5-2 17:42:23

好好学习才能天天向上!

宫宸 发表于 2022-9-6 22:40:37

这个怎么没人学

宫宸 发表于 2022-9-6 22:41:08

我要考研

1148431841 发表于 2022-10-14 20:03:57

.

一个大西瓜嚯嚯 发表于 2023-3-24 12:43:22

最后一个程序在dev C++里面怎么实现呢?
页: [1]
查看完整版本: S1E33:生存期和存储类型