C/C++中作用域

作用域

当变量在程序中的某个部分被声明时,它只有在程序的一定区域才能被访问。这个区域由标识符的作用域(scope)决定。标识符的作用域就是程序中该标识符可以被使用的区域。例如,函数的局部变量的作用域局限于该函数的函数体。

编译器可以确认4种不同类型的作用域:文件作用域、函数作用域、代码块作用域和原型作用域。

标识符声明的位置决定它的作用域。

代码块作用域

位于一对花括号之间的所有语句称为一个代码块。任何在代码块的开始位置声明的标识符都具有代码块作用域(block scope),表示它们可以被这个代码块中的所有语句访问。

文件作用域

任何在所有代码块之外声明的标识符都具有文件作用域(filescope),它表示这些标识符从它们声明之处直到它所在的源文件结尾都是可以访问的。
在头文件中编写并通过#include 指令包含到其他文件中的声明就好像它们是直接写在那些文件中一样。它们的作用域并不局限于头文件的文件尾。

原型作用域

何为函数原型,就是函数的声明,它与函数定义不同。

原型作用域(prototype)只适用于在函数原型中声明的参数名。在原型中,参数的名字并非必需。但是,如果出现参数名,你可以随意给它们取任何名字,它们不必与函数定义中的形参名匹配,也不必与函数实际调用时所传递的实参名匹配。原型作用域防止这些参数名与程序中其他部分的名字冲突。事实上,唯一可能出现的冲突就是在同一个原型中不止一次地使用同一个名字。

函数作用域

涉及goto语句,“c和指针”这本书这么说的,它只适合于语句标签,语句标签用于goto语句。基本上,函数作用域可以简化为一条规则:一个函数中的所有语句标签必须唯一。并希望永远不要用到这个知识。

注意:static不会改变局部变量的作用域,如果是静态局部变量,其作用域为一对{}内,如果是静态全局变量,其作用域为当前文件

原文链接:https://blog.csdn.net/Reborn_Lee/article/details/82085049

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值