作用域(c和指针)

本文详细解释了编程中四种主要的作用域概念:代码块作用域、函数作用域、文件作用域和原型作用域,并通过示例代码说明了这些作用域如何在实际编程中应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  作用域就是程序中该变量可以被使用的区域。

//标识符作用域示例
int a; //1
int b(int c); // 2,3
int d(int e) // 4,5
{
int f; //6
int g(int h); //7,8
{
int f,g,i; //9
}
{
int i; //10
}
}

1.代码块作用域

  位于一对花括号之间的所有语句就称为一个代码块。任何在代码块开始位置声明的标识符都具有代码块作用域,可以被代码块中所有语句访问,例如注释6,7,9,10处的变量。函数定义的形参在函数体内也具有代码块作用域。

  当代码块处于嵌套状态时,在代码块中声明的标识符的作用域在代码块的尾部终止。如果内层代码块的标识符的和外层代码块相同,内层代码块会屏蔽外层代码块的标识符,即外层代码块中的标识符在内层代码块中无法通过名字访问。注释6,9处f是不同变量,6在9处代码块中无法通过名字来访问。所以应该在避免在嵌套的代码块中使用相同的变量名,以免引起混淆

  非嵌套的代码块的作用域没有重叠之处,在任何时刻最多只有一个处于活动状态,因此编译器可以让两个代码块中的变量共享同一内存地址,而不会发生错误。

2.函数作用域

  函数中所有的语句标签必须唯一。

3.文件作用域

  任何在所有代码块之外声明的标识符和函数名都具有文件作用域,范围是从声明处到文件结尾。在头文件中编写并通过#include包含到其他文件中的声明,就好像它们只写在那些文件中一样,作用域不限于头文件的结尾。

4.原型作用域

  只适用于函数原型中声明的参数名,此处的参数并非必须,如果有,不必与函数定义中的形参一致,也不必与调用时的实参一致。唯一可能出现冲突。就是在同一个原型中不止一次的用了同一个名字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值