全局变量和局部变量同名时操作

STM32CubeMX的正交编码器encoder 由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。 阅读详情

局部变量和全局变量的名词解释

局部变量:作用域作用一个方法或者一个代码块里面的变量。

全局变量:作用域为整个类,类里面的所有方法都能使用这个变量(全局变量不用进行初始化,它具备自动初始化的功能)。

这里需要说明的是:如果局部变量的名字和全局变量的名字是一样的,全局变量会被隐藏,如果要将全局变量显示出来,则需要在前面加上this修饰词。下面结合一个列子来说明这点内容。

<span style="font-size:14px;color:#3333ff;background-color: rgb(192, 192, 192);">public class Test {
	private int x=1;
	private int y=1;
	private int z=1;
	
	void changeVar(int a,int b,int c){
		x=a;//给全局变量赋值
		int y=b;//y使同名全局变量隐藏
		int z=9;//z使同名全局变量隐藏
		System.out.println("In changeVar:"+"x="+x+"y="+y+"z="+z);
		//结果是In changeVar:x=10y=10z=9
		this.z=c;//给全局变量z赋值
	}
	String getXYZ(){
		return "x="+x+"y="+y+"z="+z;
	}
	
	public static void main(String[] args) {
		Test t=new Test();
		System.out.println("Before changeVar:"+t.getXYZ());
		// 结果是Before changeVar:x=1y=1z=1
		t.changeVar(10, 10,10);
		System.out.println("After changeVar:"+t.getXYZ());
		//结果是After changeVar:x=10y=1z=10
	}
}</span>

分析一下这输出的结果

  • 最先输出的是Before changeVar: x=1 y=1 z=1这一行,结果全局变量一开始的初始化的值;
  • 接着输出是In changeVar: x=10 y=10  z=9这一行内容,因为在调用这个changeVar()方法的时候给全局变量赋值了,给局部变量也赋值,但是x,y因为和全局变量同名,而c本身一开始就赋值为9,所以结果是这样;
  • 最后输出After changeVar: x=10 y=1 z=10这一行,输出x为10,是因为在调用 changeVar() 这个方法的给x赋值为10,隐藏了全局变量,而此时输出x在方法中已经变为10,y为1是因为他是全局变量y,c为10的原因是成员变量z隐藏全局变量,但是this修饰词又调用本类的全局变量z。


附注--如果有什么值得修改的不到之处,还请指正。



单细胞分析避坑指南:SCTransform和Harmony参数设置详解 本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。 阅读详情

相关推荐

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

C语言中全局变量和局部变量同名时的访问方法

#include int i = 911; /* * 方法一:用一个函数来访问 * */ int get_global() { return i; } int main() { int i = 3; int tmp; printf("global_i = %d, local_i = %d\n",get_global(), i); /*

M_O_Bz的专栏 5459

H3C-HCL模拟器-STP生成树协议实验

边缘接口的存在是为了提高网络的收敛速度和性能。由于边缘接口连接的是终端设备,这些设备通常不会产生环路,因此不需要参与生成树协议的计算和决策。边缘接口通常是指那些不会连接到其他交换机或生成树的冗余路径的接口。H3C交换机千兆口的cost默认是20,把SW2的g1/0/2接口的cost改为100;SW4是根网桥,根据STP计算,闭塞端口应该在SW1上;方法:使得SW2到SW1的cost比SW4到SW1更大;7)修改配置:把SW1连接PC的所有接口配置为边缘接口。协议的计算开销,提高网络的收敛速度。

网络工程 2995

局部变量和全局变量重名

局部变量和全局变量重名的时候局部变量会覆盖全局变量;如果希望在局部变量的作用域范围内使用全局变量,要用作用域符:: 如下  m_hRC = ::wglCreateContext (m_pDC->GetSafeHdc ());

sinat_15652045的博客 678

避坑指南:Vue2中使用TinyMCE5常见问题解决方案(含PowerPaste插件异常处理)

本文针对Vue2项目中集成TinyMCE 5富文本编辑器时遇到的高频疑难问题,提供了一套深度实战解决方案。内容涵盖环境搭建、资源路径配置、图片与视频上传处理、以及替代PowerPaste插件的自定义粘贴清理方案,旨在帮助开发者有效规避常见陷阱,构建稳定可靠的内容编辑功能。

weixin_29012677的博客 154

brpc组件bvar源码解析(一)简介、使用和类的关系

bvar是brpc中的一个重要组件,brpc内部有很多builtin监控都是bvar实现的。 brpc文档介绍bvar“几乎不会给程序增加性能开销,也快于竞争频繁的原子操作”。它的原理是:多线程累加一个计数器时,每个线程只累加私有的变量而不参与全局竞争,因此写时没有锁的竞争;在读取时累加所有线程的私有变量。虽然读比之前慢多了,但写就快多了,因此它使用写多读少的场景,例如统计、监控场景。 1.使用 // bvar::Adder<T>用于累加,下面定义了一个统计read error总数的Adder。

华秋实的专栏 1852

全局变量和函数局部静态变量是否可以重名?

内存的小细节

weixin_44705936的博客 919

学术版GPT安装教程——保姆版(附带原生GPT注册教程)

学术版GPT图文安装教程

DBenD的博客 2万+

全局变量和局部变量重名

当局部变量和全局变量重名的时候,局部变量在其定义域的优先级更高,全局变量会自动被忽视,如果我们想要用到全局变量,我们可以在全局变量前加上::作用域运算符,因为C++里定义当缺省左侧对象时默认为全局变量 代码: #include<iostream> using namespace std; int x=100; int main(){ int x=10; cout<<x<<endl;//输出为10 cout<<::x;//输出为100 } .

qq_61881029的博客 4513

深入Google DroidGuard:剖析其自定义虚拟机如何守护Android应用安全(附pcbc文件机制解析)

本文深入解析Google DroidGuard自定义虚拟机如何通过独特的架构设计和加密机制保护Android应用安全。DroidGuard采用动态密钥派生、全加密执行环境和pcbc文件机制,有效防御逆向工程和自动化攻击,为移动安全提供新思路。

weixin_34254464的博客 307

微信小程序 - 最新实现人脸识别认证功能,使用官方微信小程序人脸识别身份验证接口及常见的人脸核验、用户实名认证、身份证件与人脸是否匹配、是否活体、领取业务人脸认证等各种示例(验证活体人脸是否匹配源码)

微信小程序中实现人脸识别认证,微信小程序人脸识别认证-微信开放接口,如何为微信小程序添加人脸识别和身份验证功能,如何为微信小程序集成人脸识别与身份验证,微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,微信小程序基于小程序实现人脸识别对比,人脸识别报错,微信人脸核身接口能力,微信小程序实名认证 人脸核验 人脸识别,微信小程序实名认证与人脸核身接口全解析,微信小程序-人脸识别+输出人脸匹配信息,微信小程序实名认证人脸核验人脸识别,微信小程序实名认证:wx.startFa

🏆 前端领域优质创作者 3274

C语言中局部变量与全局变量的区别及其同名时的优先级

在C语言中,按照变量的作用域将变量分为和顾名思义,即在定义的变量,函数的形式参数也称为局部变量;同名时

C++领域内容分享 9149

YOLOv8 智能交通违章检测 - 机动车道占用(违停/非机动车占道)详解

本文提出基于YOLOv8的智能交通违章检测方案,主要针对机动车道占用问题。系统整合目标检测、目标跟踪和ROI区域判定,实现两种典型场景检测:违章停车(静止超时)和非机动车/行人占道。详细介绍了系统架构、配置文件设计、核心逻辑实现及可视化模块,包括ROI区域管理、状态跟踪和违章判定算法。针对实际应用中的堵车误判、非机动车误报等问题,提出了密度检测、轨迹分析和自适应阈值等优化策略。该方案计算量适中,适合边缘设备部署,并建议配套开发ROI标定工具和证据链保存功能。

u010117029的博客 236

局部变量和全局变量的区别,能同名吗

局部变量和全局变量的区别,能同名吗

weixin_52669146的博客 2249

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python函数局部变量和全局变量同名_python函数局部变量、全局变量、递归知识点总结...

函数局部变量 全局变量 及其作用域#简单类型(int str等)变量的局部变量与全局变量及其作用域的关系name = "xxx" #第一级顶头定义的变量都称为全局变量,其作用域从变量定义的位置开始到此程序结束def Print_Name():print("name before change:", name)#由于name在此函数之前已经被定义为全局变量,此处函数读取变量name是读取的全局变量n...

weixin_39862871的博客 874

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python学习笔记(局部变量和全局变量)

局部变量:在函数定义的函数体中使用的变量; 全局变量:全局变量和局部变量的区别仅在于局部是函数内部使用的变量,而函数外部整个程序使用的变量叫全局变量。 规则1:全局变量和局部变量是不同的变量 -局部变量是函数内部的占位符,与全局变量可能重名但不同 -函数运算结束后,局部变量被释放 -可以使用保留字global在函数内部使用全局变量 使用global后 规则2:局部变量为组合数据类型且未创建,等同于全局变量 对比以下两段代码 ls在函数内部没有被真实创建,但和全局变量的名字...

MissDan1995的博客 976

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C/C++ 全局变量的访问

#include <iostream> using namespace std; int a = 10; int main(int argc, char **argv) { int a = 20; std::cout << "XXXX a = " << a << std::endl; std::cout << "XXXX ::a = " << ::a << std::endl; re.

小橙子的博客 1547

015python-全局变量

全局变量作用域 1.作用范围不一样,全局变量在模块里面都可以调用,函数的局部变量只能用于函数内部 2.当全局变量和局部变量同名且同时存在的时候,函数优先调用局部变量 3.当局部变量没有 就优先用全局的 4.global 声明全局变量...

weixin_47481102的博客 246

在做题中学习(6):全局与局部变量陷阱

而交换完成后,因为printf在main函数里,也就是在局部变量的作用域内,在全局变量和局部变量重名时,在局部变量作用域内,全局变量会失效,所以printf只会打印局部变量x,y。时,没有带任何参数,所以只能找到并调用。像这样一道题,因为调用。

yiren_liusong的博客 94

总结二(C语言):转义字符,数据类型,全局变量和局部变量

转移字符,顾名思义就是转变字符的意思或作用,使其表示另一种意思或作用,我们最常用的转义字符就是\n,它表示的就是换行。接下来,详细说说一些常见的转义字符。1)\':我们在编写代码时,如要在要屏幕上打印一个单引号,我们就会用到这个转义字符。单引号是一个字符,所以我们通常的打印方式是这样:可见器报错了,所以这种打印方法是错误的。我们应该这样打印:可见这样打印,我们就顺利的打印出单引号了。2)\":与1)类似,当我们要打印一个双引号时,就需要用到这个转义字符来打印。

pork_32的博客 2105

python 函数递归一次增加一次变量_python学习-day15:局部变量与全局变量、嵌套函数、递归...

一、全局变量与局部变量在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。通过在函数内部,先添加一个 global name 相当于在子模块定义了一个全局变量。把局部的name扩到到全局变脸,后续name的变化,也...

weixin_39996134的博客 331

c语言变量加法与两个整数和程序

c语言中,变量是能改变的量,变量分为局部变量和全局变量,在{}里面的是局部变量,反之就是全局变量。当全局变量与局部变量名字相同时,局部变量优先。之后ctrl+f5运行程序。

2301_80442229的博客 285

自己看的(没什么技术含量)

全局变量和局部变量的问题: public class AB {  int i=10; int fun(){     System.out.println(i); i++; ++i;      System.out.println(i);   return i; //返回的是全局变量,全局变量的值变了 }   public static void main(String args

m1111121的专栏 911

单目操作符

咋们看上面的代码的输出结果:主看两个double类型的区别,一个是用printf打印的时候是 f ,一个是 lf。二者的输出结果是一样的,那么我们就可以判定lf 与 f的使用在用printf打印时是一个意思罢了。*此处虽然可以编译,但会出现一个警告:就是这个若没有后缀f的话,那么编译器就会自动的认为此数是一个双精度的浮点数,即会出现上图所示的警告:发生截断。——所以为了代码的精确性:在使用单精度浮点数来表示小数的时候,还是在小数后面加上f为好!

VS_183的博客 272

关于python中定义函数的全局变量问题

定义函数时,如果对全局变量进行操作,即使在函数先执行的语句中定义的变量中含有全局变量,其值也会根据全局变量的变化而变化。返回值不为[[2]] 而是[[2],[]]

m0_73953115的博客 120

golang := 操作符 疑惑

:= 操作符 通常: 函数体内使用 := 重复声明同名变量,是不允许的: `` 疑惑: 但是今天发现一段代码,如下这样重复声明变量,却编译通过并成功执行: `` 代码: var x int func Test_var(t *testing.T)  {    fmt.Println(x, &x)    x = 1    fmt.Println(x, &x)    var x i

u012576527的博客 512
下一篇: frame框架
凌疯墨子
博客等级 码龄11年 47粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值