给个做的网站吗,如何建设微商网站,网络营销的一般流程,免费软件app下载大全(Effective C) 2.3 作用域 文章目录 (Effective C) 2.3 作用域前言#x1f522;4大作用域1️⃣文件作用域2️⃣块作用域3️⃣函数原型作用域4️⃣函数作用域 ⭐作用域性质#x1f4d6;实例CodeEND关注我 前言
作用域应用于标识符的某个特定声明。
标识符包含对象#xff0…(Effective C) 2.3 作用域 文章目录 (Effective C) 2.3 作用域前言4大作用域1️⃣文件作用域2️⃣块作用域3️⃣函数原型作用域4️⃣函数作用域 ⭐作用域性质实例CodeEND关注我 前言
作用域应用于标识符的某个特定声明。
标识符包含对象函数标签宏等等。
作用域是一块连续的区域在域的任何位置可以访问当前位置的前面区域的标识符。
4大作用域
在C语言中包含4大作用域
文件块函数原型函数
1️⃣文件作用域
位置语句块或参数列表之外。
范围作用于整个文件以及声明位置之后的所有包含文件。
2️⃣块作用域
位置语句块或参数列表内。
范围仅在此块中访问。
3️⃣函数原型作用域
位置函数原型的参数声明列表中。通俗来说就是函数“声明”时的小括号的参数列表
范围在函数声明器结束处终止。
4️⃣函数作用域
位置函数定义的左花括号和右花括号之间的区域。
范围整个函数体内。
注意标签是唯一一种具有函数作用域的标识符。如goto的标签switch case的标签
⭐作用域性质
作用域可以嵌套内部作用域可以访问外部作用域 如果内部作用域和外部作用域声明相同标识符则外部的同名表示会被内部遮蔽(hidden)。 块作用域是在文件作用域内定义的标签是唯一一种具有函数作用域的标识符。
实例Code
这段代码还是很清晰的但也提示我们由于C语言中有标识符作用域遮蔽的问题所以我们取名的时候一定要注意和区分。
#include stdio.hint 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