当前位置: 首页 > news >正文

(Effective C) 2.3 作用域

(Effective C) 2.3 作用域

文章目录

  • (Effective C) 2.3 作用域
  • 前言
  • 🔢4大作用域
    • 1️⃣文件作用域
    • 2️⃣块作用域
    • 3️⃣函数原型作用域
    • 4️⃣函数作用域
  • ⭐作用域性质
  • 📖实例Code
  • END
    • 关注我

前言

作用域应用于标识符的某个特定声明。

标识符包含对象函数标签等等。

作用域是一块连续的区域,在域的任何位置,可以访问当前位置的前面区域的标识符。

🔢4大作用域

在C语言中包含4大作用域:

  1. 文件
  2. 函数原型
  3. 函数

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

http://www.lryc.cn/news/384531.html

相关文章:

  • Python 基础 (标准库):堆 heap
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-30Kaggle竞赛:图片分类
  • 【LeetCode】每日一题:数组中的第K大的元素
  • Keil5.38ARM,旧编译器(V5)安装
  • 【perl】脚本编程的一些坑案例
  • MIX OTP——使用 GenServer 进行客户端-服务器通信
  • 2024年云安全发展趋势预测
  • java.io.eofexception:ssl peer shut down incorrectly
  • Unity之HTC VIVE Cosmos环境安装(适合新手小白)(一)
  • 入门JavaWeb之 Response 验证码和重定向
  • 2024-06-26 问AI: 在大数据模型中,deep speed 是什么?
  • mobaxterm x11 转发Ubuntu mac
  • python数据分析实训任务三(‘职业’)
  • vscode连接SSH
  • 金融科技行业创新人才培养与引进的重要性及挑战
  • 【C++题解】1714. 输出满足条件的整数4
  • 如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
  • Graphwalker基于模型的自动化测试
  • Macbook M1 Fusion安装Debian/Linux
  • ERP收费模式是怎样的?SAP ERP是如何收费的?
  • 如何实现免交互
  • 浏览器userAgent大全及JS判断当前APP
  • 11.异常(java版)
  • 单片机学习记录
  • flask的基本使用1
  • 如何编写时区源文件
  • 植物大战僵尸杂交版v2.1最新整合版,附PC端+安卓端+iOS端安装包+修改器+安装教程!
  • 【5G射频基本架构】
  • 4.任务调度
  • Github 2024-06-27 Go开源项目日报Top10