![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
7.5 局部变量和全局变量
7.5.1 局部变量
在一个函数内部定义的变量叫局部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用,在此函数外是不能使用这些变量的。看看如下范例:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p133_85788.jpg?sign=1739350875-NYMrVyhpg0ohz6sumelOfkTIEI06rzFP-0-47349c0f92fb65f92270b656b38604e3)
有几点说明:
(1)main函数中定义的变量m、n、k只在main函数中有效。虽然main函数调用了其他函数(func1函数),但其他函数中无法使用main函数中定义的变量(如果能使用的话,main函数就不必传递实参到函数中去了)。
(2)不同的函数内部可以使用相同的变量名,互不干扰。例如,在上述func1函数中也可以定义变量m、n、k等,它们与main函数中定义的变量m、n、k占用不同的内存单元,互不混淆。
(3)形参也是局部变量,如上述函数func1中的tmpvalue,只在func1函数内有效,在其他函数中不能使用tmpvalue。
(4)有一种特殊写法——复合语句(一般只用于写一些测试代码的目的),虽然不一定会这样用,但一旦遇到这种写法,也要能够识别:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p134_85790.jpg?sign=1739350875-6ZdbLHhgD0htN5CD7Xdj6nyHme26UvPC-0-bdffa94a5b2aadd025a3aeb63bde2d6b)
绘制一个形象点的局部变量有效范围示意图如图7.11所示。
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-P134_48554.jpg?sign=1739350875-tEhgRKcTB0LMiFgnLG0wVyCnxWyJHl37-0-edd4be768e23c5ca84bbb36ee8bded09)
图7.11 局部变量有效范围示意图
图7.11中,变量c只在复合语句内有效,离开该复合语句后变量c就会无效,其内存也会被系统释放(回收)。