如何做招聘网站的方案wordpress怎样添加会员
(Effective C) 2.3 作用域
文章目录
- (Effective C) 2.3 作用域
 - 前言
 - 🔢4大作用域
 - 1️⃣文件作用域
 - 2️⃣块作用域
 - 3️⃣函数原型作用域
 - 4️⃣函数作用域
 
- ⭐作用域性质
 - 📖实例Code
 - END
 - 关注我
 
前言
作用域应用于标识符的某个特定声明。
标识符包含对象,函数,标签,宏等等。
作用域是一块连续的区域,在域的任何位置,可以访问当前位置的前面区域的标识符。
🔢4大作用域
在C语言中包含4大作用域:
- 文件
 - 块
 - 函数原型
 - 函数
 
1️⃣文件作用域
位置:语句块或参数列表之外。
范围:作用于整个文件以及声明位置之后的所有包含文件。
2️⃣块作用域
位置:语句块或参数列表内。
范围:仅在此块中访问。
3️⃣函数原型作用域
位置:函数原型的参数声明列表中。(通俗来说就是函数“声明”时的小括号的参数列表)
范围:在函数声明器结束处终止。
4️⃣函数作用域
位置:函数定义的左花括号和右花括号之间的区域。
范围:整个函数体内。
注意:标签是唯一一种具有函数作用域的标识符。(如:goto的标签,switch case的标签)
⭐作用域性质
- 作用域可以嵌套
 - 内部作用域可以访问外部作用域 
- 如果内部作用域和外部作用域声明相同标识符,则外部的同名表示会被内部遮蔽(hidden)。
 
 - 块作用域是在文件作用域内定义的
 - 标签是唯一一种具有函数作用域的标识符。
 
📖实例Code
这段代码还是很清晰的,但也提示我们由于C语言中有标识符作用域遮蔽的问题,所以我们取名的时候一定要注意和区分。
#include <stdio.h>int j;  // j的文件作用域开始void f(int i) {                    // i的块作用域开始int j = 1;                     // j的块作用域开始。遮蔽了j的文件作用域i++;                           // i是函数参数for (int i = 0; i < 2; i++) {  // 循环局部变量i的块作用域开始int j = 2;                 // 内部j的块作用域开始。遮蔽了外围的jprintf("%d\n", j);         // 内部j的块作用域,打印出2}  // 内部i和j的块作用域开始printf("%d\n", j);  // 处于外围j的作用域,打印出1
}  // i和j的块作用域结束void g(int j);  // j具有函数原型作用域。遮蔽了j的文件作用域
 
END
注意:
- 作用域应用于标识符
 - 生命周期应用于对象
 
关注我
关注我,学习更多C/C++,算法,计算机知识
B站:
👨💻主页:天赐细莲 bilibili
![]()
