变量的生命周期和作用域

作用域

image

猜猜a的printf每次输出的是什么?

答案是

88

99

10

为什么呢?

我们明明定义了全局变量,结果在test()函数里没有用全局变量,而是用的局部变量的值

因为如果⼀个量在全局定义,⼜在局部定义了,那么这个量依照局部优先原则,先使⽤局部定义,然后再使⽤全局定义,但是注意局部变量会销毁,所以在别的函数⾥使⽤的依旧是全局变量(没有在局部定义这个量的情况下)

image

而变量b为什么会报错呢?因为它只是在while的代码块内定义了,那么它的作用域就在while的代码块之内,不能在外面进行使用

生命周期

image

在这一串的代码中

全局a的生命周期是全程

而局部的a的生命周期则是函数结束

b的生命周期则是while循环结束

那么s1呢?

它的生命周期也是全程

因为我们使用了static修饰它,使它变为了静态的变量,那么我们第二次调用时,它依旧保留有上次的值,所以第二次打印是2.

程序运行的结果:

image

posted on 2023-03-13 20:54  沐阳Yo  阅读(69)  评论(0)    收藏  举报