首页 理论教育 C++函数作用域-零基础C++从入门到精通

C++函数作用域-零基础C++从入门到精通

时间:2023-08-20 理论教育 版权反馈
【摘要】:运行结果如图7.1.2所示:图7.1.2函数的局部作用域我们可以看到,函数中也可以添加局部作用域块,而其中定义的局部变量会屏蔽函数一开始定义的同名变量。动手写7.1.4动手写7.1.4展示了全局变量对函数的影响,运行结果如图7.1.3所示:图7.1.3全局变量我们可以看到,无论是在自定义函数printSomething中还是在main()函数中,全局变量都是可见的。这里需要注意的是,虽然main()函数调用了printSomething(),但是两个函数还是并列的关系,函数定义都处于全局作用域之下。

C++函数作用域-零基础C++从入门到精通

函数体的定义是用花括号框起来的,这样我们自然会想到作用域的定义。函数作为程序中相对独立的一个有机体,也有自己的作用域。反过来说,如果函数没有作用域,其中定义的局部变量还会干扰外层的变量,这样就违背了函数隐藏实现的初衷。

动手写7.1.3

动手写7.1.3展示了函数的局部作用域。运行结果如图7.1.2所示:

图7.1.2 函数的局部作用域

我们可以看到,函数中也可以添加局部作用域块,而其中定义的局部变量会屏蔽函数一开始定义的同名变量。此外,在main()函数中调用printSomething前定义的局部变量在函数定义中不可见,这点与控制语句的情况不一样。

动手写7.1.4

动手写7.1.4展示了全局变量对函数的影响,运行结果如图7.1.3所示:(www.xing528.com)

图7.1.3 全局变量

我们可以看到,无论是在自定义函数printSomething中还是在main()函数中,全局变量都是可见的。

动手写7.1.5

动手写7.1.5展示了函数同时存在全局变量和局部变量的情况,运行结果如图7.1.4所示:

图7.1.4 函数作用域的综合示例

我们可以看到,printSomething()函数中声明的局部变量something屏蔽了同名的全局变量something,因此在声明something之后打印的结果就从5变成了3;而main()函数中的局部变量也屏蔽了全局变量,因此打印的结果也从一开始的5变成了4。这里需要注意的是,虽然main()函数调用了printSomething(),但是两个函数还是并列的关系,函数定义都处于全局作用域之下。

此外,printSomething()的返回值类型是void,我们会在7.1.5小节中讲解这一概念。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈