对于嵌套代码块而言,块里面定义了和外面同名的变量,这个块里面同时存在两个名称相同
的变量。这两个同名的变量只是名称相同,它们属于不同的变量空间,其中一个是块外面的变量,
另外一个是块里面的变量。
(1)在块里面,块外面的变量仍然存在,块里面的变量空间处于主导地位,块外面的变量空间
处于服从地位。
如果在块里面使用printf函数输出同名变量的值,那么只会输出块里面的同名变量的值。
(2)在块外面,块里面的变量不存在,只存在块外面的变量。
如果在块外面使用printf函数输出同名变量的值,那么只会输出块外面的同名变量的值。
一、本地变量的定义
函数或代码块的每次运行,会产生一个独立的变量空间。这个变量空间中的变量,称为本地变量。
本地变量的英文名称是local variable
本地变量,亦称为局部变量。
函数体内部的所有变量,以及函数头参数表中的参数,它们都是本地变量。代码块内的所有变量
都是本地变量。
通常情况下,本地变量不会被默认初始化。
本地变量在使用前必须把初始值赋予它。
调用函数时,函数头参数表中的参数会被赋值。因此,参数在进入函数时被初始化了。
二、本地变量的生存期和作用域
本地变量只有在函数或代码块被执行时才存在,函数或代码块结束执行后就消亡。
因此,通常情况下,我们认为本地变量的生存期和作用域都被限制在代码块的大括号内。
注释:函数可以视为一个代码块。某些代码块没有函数头,但是这些代码块有自己的本地变量。
如下图所示,变量b是代码块的本地变量。

本地变量b在代码块的大括号内存在,离开大括号后就消亡,如下图所示。


注释:DEV C++调试界面中蓝色小箭头所指的位置,是下一步要执行的语句。
除此之外,主函数main( )的本地变量的生存期和作用域比较特殊。
主函数main( )中往往会调用自定义函数,主函数的本地变量会随着调用自定义函数而短暂消失,
随着自定义函数结束运行而复现,直到主函数main( )结束运行才消亡。
三、嵌套代码块
一个代码块位于另外一个代码块中,这样的代码块被称为嵌套代码块。
如下图所示,代码块B位于代码块A中。

这样的嵌套代码块具有一些特殊性质:
①代码块B中的本地变量只在它自己的大括号内存在,离开它自己的大括号后消亡。
②代码块A中的本地变量能在代码块B的大括号内使用。
注释:因为代码块B位于代码块A中,所以代码块A中的本地变量在代码块B的大括号内存在。
③若“代码块B中的本地变量的名称”与“代码块A中的本地变量的名称”相同,则在代码块B的
大括号内同时存在两个名称相同的变量:其中一个是代码块B的变量,另外一个是代码块A的
变量。这两个同名的变量只是名称相同,它们属于不同的变量空间。
④在块里面,块外面的变量仍然存在,块里面的变量空间处于主导地位,块外面的变量空间
处于服从地位。
如果在块里面使用printf函数输出同名变量的值,那么只会输出块里面的同名变量的值。
⑤在块外面,块里面的变量不存在,只存在块外面的变量。
如果在块外面使用printf函数输出同名变量的值,那么只会输出块外面的同名变量的值。

3381

被折叠的 条评论
为什么被折叠?



