C语言基础语法-教案14(从小白到劝退之作用域)

【STM32-DSP库的使用】基于Keil5 + STM32CubeMX + CMSIS-DSP 手动添加、库添加方式 CMSIS-DSP库在工程中应用遇到的所有问题进行归纳终结 阅读详情

最近给大家争取到一个 深夜福利

保证你在深夜手机刷到 嘎嘎香~

那就是  大流量卡

缺点:月租太便宜 

185GB~

100分钟通话时长~

长期套餐~

畅想自由的气息

流量自由的同时还拥有超长通话,而且免费领取。

废话不多说直接上图。

名额有限,感兴趣的家人私我或者直接加微信:lyg15314144781

流量卡

基本概念

C语言中,标识符都有一定的可见范围,这些可见范围保证了标识符只能在一个有限的区域内使用,这个可见范围,被称为作用域(scope)。

软件开发中,尽量缩小标识符的作用域是一项基本原则,一个标识符的作用域超过它实际所需要的范围时,就会对整个软件的命名空间造成污染,导致一些不必要的名字冲突和误解。

函数声明作用域

  • 概念:在函数的声明式中定义的变量,其可见范围仅限于该声明式。
  • 示例:
void func(int fileSize, char *fileName);
  • 要点:
    • 变量 fileSize 和 fileName 只在函数声明式中可见。
    • 变量 fileSize 和 fileName 可以省略,但一般不这么做,它们的作用是对参数的注解。

局部作用域

  • 概念:在代码块中定义的变量,其可见范围从其定义处开始,到代码块结束为止。
  • 示例:
int main()
{
    int a=1;
    int b=2;     // 变量 c 的作用域是第4行到第9行
    {
        int c=4;
        int d=5; // 变量 d 的作用域是第7行到第8行
    }
}
  • 要点:
    • 代码块指的是一对花括号 { } 括起来的区域。
    • 代码块可以嵌套包含,外层的标识符会被内嵌的同名标识符临时掩盖变得不可见。
    • 代码块作用域的变量,由于其可见范围是局部的,因此被称为局部变量。

全局作用域

  • 概念:在代码块外定义的变量,其可见范围可以跨越多个文件。
  • 示例:
int global; // 变量 global 的作用域是第2行到本文件结束
int main()
{
}
void f()
{ 
}

文件:a.c

extern int global; // 声明在 a.c 中定义的全局变量,使其在 b.c 中也可见
void f1()
{
}
void f2()
{
}

文件:b.c

  • 要点:
    • 代码块指的是一对花括号 { } 括起来的区域。
    • 代码块可以嵌套包含,外层的标识符会被内嵌的同名标识符临时掩盖变得不可见。
    • 代码块作用域的变量,由于其可见范围是局部的,因此被称为局部变量。

作用域的临时掩盖

如果有多个不同的作用域相互嵌套,那么小范围的作用域会临时 “遮蔽” 大范围的作用域中的同名标识符,被 “遮蔽” 的标识符不会消失,只是临时失去可见性。

示例代码:

int a = 100;

// 函数代码块1
int main(void)
{
    printf("%d\n", a); // 输出100
    int a = 200;
    printf("%d\n", a); // 输出200
   
    // 代码块2 
    {
        printf("%d\n", a); // 输出200
        int a = 300;
        printf("%d\n", a); // 输出300
    }
    printf("%d\n", a); // 输出200
}

void f()
{
    printf("%d\n", a); // 输出100
}

static关键字

C语言的一大特色,是相同的关键字,在不同的场合下,具有不同的含义。static关键字在C语言中有两个不同的作用:

  1. 将可见范围设定为标识符所在的文件:
  • 修饰全局变量:使得全局变量由原来的跨文件可见,变成仅限于本文件可见。
  • 修饰普通函数:使得函数由原来的跨文件可见,变成仅限于本文件可见。
  1. 将存储区域设定为数据段:
  • 修饰局部变量:使得局部变量由原来存储在栈内存,变成存储在数据段。
  • 示例:
int a;        // 普通全局变量,跨文件可见
static int b; // 静态全局变量,仅限本文件可见

void f1()        // 普通函数,跨文件可见
{}

static void f2() // 静态函数,跨文件可见
{}

int main()
{
           int c; // 普通局部变量,存储于栈内存
    static int d; // 静态局部变量,存储于数据段
}

rk3576 适配摄像头 (mipi 双摄) RK3576 自带两个 4-Lane DPHY 和一个 DCPHY CSI 接口,可以连接 4lane 的双摄像头,最直接的方式就是充分利用其两个 D-PHY 接口。次选方案是 DCPHY + DPHY方案,更次之方案是单DPHY,设置成分离模式,连接两颗摄像头。 阅读详情

相关推荐

平衡电桥在高压绝缘检测中的动态切换策略与误差优化

本文深入探讨了平衡电桥在高压绝缘检测中的动态切换策略与误差优化方法。通过分析四种基本切换模式及智能切换时序设计,显著提升检测精度与范围。结合电阻选型黄金法则和软件补偿技术,有效降低测量误差,为电动汽车电池管理系统提供可靠的安全保障。

weixin_30275415的博客 473

C语言基础语法-教案10(从小白到劝退之内存管理)

C语言基础语法-教案10(从小白到劝退之内存管理)

LINUX823的博客 1754

几款支持国标GB28181的平台以及视频监控设备接入的配置方法(Web端无插件播放)

GB28181解决的一个主要问题就是如何远程、跨网络、跨区域、跨级别的访问网络中的监控设备(包括IPC、NVR等),本文介绍几款G28181平台的接入配置方法,适合有监控视频摄像头的远程接入和预览需求的人群参考使用。

一名高级工程师的博客 1万+

C语言基础语法-教案02(从小白到劝退)

C语言-教案02(从小白到劝退)

LINUX823的博客 1058

kmeans聚类分析结果怎么看_【Stata与机器学习】物以类聚-KMeans算法应用案例介绍...

古语有云:物以类聚,人以群分。KMeans是无监督机器学习中的聚类算法中最简单的一种——基于特征对样本进行归为不同的类,很好地阐述了‘物以类聚’这句话的精髓。机器学习又叫统计学习。既然都统计了,所以当然包括了计量经济学。所以一般来说,机器学习的算法类型远多于计量经济学。比如线性回归,这个算是机器学习算法中比较基础的部分。当然,计量经济学在回归分析、因果推断方面的造诣,也是普通机器学算法所不能比的。...

weixin_39857480的博客 1万+

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1100

C语言基础语法-教案17(从小白到劝退之结构体进阶)

C语言基础语法-教案17(从小白到劝退之结构体进阶)

LINUX823的博客 941

Comsol固体力学仿真﹣﹣受均匀内压的厚壁球壳弹塑性分析(加载卸载全流程)

COMSOL固体力学及结构力学仿真较少,故而查询了有关资料,才建立了如下模型。图4 加载卸载全历程中的冯米塞斯应力变化。该有限元模型是通过扫掠而得的结构化网格。图2 加载卸载全历程中的塑型区域变化。图3 加载卸载全历程中的位移应力变化。图6 关键节点第一,第三主应力分布。图5 关键节点应力场与塑性区分布。《弹塑性力学》大作业,记录一下。图1 球体的有限元网格模型。

weixin_62236383的博客 1487

C语言基础语法-教案15(从小白到劝退之存储期)

C语言基础语法-教案15(从小白到劝退之存储期)

LINUX823的博客 869

全本地AI代理实战:零数据外泄的本地化Agent工作流搭建

全本地AI代理是一种将大语言模型推理、长期记忆与工具调用完全运行于用户本地设备的智能体架构,其核心原理在于通过进程隔离与标准化协议实现模型层、记忆层和工具层的解耦协同。相比依赖云端API的传统方案,它在数据主权、响应确定性与环境复现性上具备不可替代的技术价值。典型应用场景包括法务合规文档处理、离线工业现场辅助决策、以及高敏感度企业知识管理。本文聚焦Qwen2+Ollama+SurrealDB+Agno技术栈,详解如何构建可落地的全本地AI代理系统,覆盖从硬件适配、向量记忆建模到多模态插件协同的完整链路。

weixin_34194964的博客 650

解决在封装自定义IP时加入ila,或者其他ip核时出错的情况

在查阅很多资料后,明白了这个应该是软件bug,但是最终还是解决了问题 我们只需要删除

weixin_42553916的博客 3604

C语言基础语法-教案04(从小白到劝退之运算符)

C语言-教案04(运算符)

LINUX823的博客 1115

基于八叉树的k近邻搜索

在八叉树中,每个节点都表示一个正方体的体积元素(体素),并且每个节点都有八个子节点(在不为空的情况下)。搜索最近邻点:一旦确定了查询点在八叉树中的位置,就可以开始搜索最近邻点了。搜索过程通常从查询点所在的叶节点开始,并逐步扩展到相邻的叶节点和父节点,直到找到k个最近邻点为止。k近邻搜索的目标是在给定的点云数据中,找到一个查询点的k个最近邻点。定位查询点:在搜索过程中,首先需要确定查询点在八叉树中的位置。返回结果:最后,搜索算法会返回找到的k个最近邻点的索引和它们与查询点之间的距离。

twnkie的博客 674

C语言基础语法-教案11(从小白到劝退之函数)

C语言基础语法-教案11(从小白到劝退之函数)

LINUX823的博客 563

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C语言基础语法-教案13(从小白到劝退之字符串函数)

C语言基础语法-教案13(从小白到劝退之字符串函数)

LINUX823的博客 734

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C语言基础语法-教案03(从小白到劝退)

C语言-教案03(数据类型下)

LINUX823的博客 368

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Linux】别再被命令行劝退!Linux 26个救命指令,从小白到运维高手

本文系统梳理Linux命令行26个核心指令,涵盖文件管理、内容查看、系统监控等六大场景。从ls、cd等基础操作,到grep文本过滤、tar压缩打包等进阶功能,配合-f实时刷新、-r递归操作等关键参数,构建完整命令体系。特别解析重定向>/>>与管道|的组合用法,以及*通配符批量处理技巧。通过对比cat/less等工具适用场景,结合日志分析、进程管理等实战案例,帮助读者快速掌握从文件操作到系统运维的必备技能,告别"鼠标依赖症",提升Linux操作效率。

2402_87731470的博客 3996

C语言基础语法-教案16(从小白到劝退之结构体初阶)

C语言基础语法-教案16(从小白到劝退之结构体初阶)

LINUX823的博客 297

C语言基础语法-教案07(从小白到劝退之数组进阶)

C语言基础语法-教案07(从小白到劝退之数组进阶)

LINUX823的博客 358

C语言基础语法-教案12(从小白到劝退之特殊函数)

C语言基础语法-教案12(从小白到劝退之特殊函数)

LINUX823的博客 360

C语言基础语法-教案06(从小白到劝退-数组初阶)

C语言-教案06(从小白到劝退-数组初阶)

LINUX823的博客 248

C语言-教案05(从小白到劝退之控制流,猿兄又是否掌握?)

C语言-教案05(从小白到劝退之控制流)

LINUX823的博客 641

☀️光天化日学C语言☀️(36)- 作用域

变量的作用域

英雄哪里出来 5218

吃透这7本正版C语言教程,从小白到编程大神,别再走弯路!

一、学C语言的人,90%都选错了教程!你是不是也抱着一腔热血想学C语言,却对着满屏晦涩的教程无从下手?是不是刷遍全网找资料,最后要么看不懂,要么学了用不上,白白浪费时间?

ney77的博客 260
上一篇: C语言基础语法-教案13(从小白到劝退之字符串函数)
下一篇: C语言基础语法-教案15(从小白到劝退之存储期)
栈时没有名字
博客等级 码龄5年 289粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值