关于变量引用和call对引用的解析

Win10系统VS2019+Cmake+qhull_8.0.0环境配置 1 qhull 1.1 简要介绍 qhull是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram等。 1.2 依赖库 qhull不依赖其他库。 1.3 源码包下载 qhull源码地址:github:https://github.com/qhull/qhull.git 2 Cmake构建项目 2.1 路径 源代码路径:D:/ThirdParty/qhull/qhull_8.0.0构建项目路径:D:/Thi. 阅读详情

大家都知道call命令是用来调用其他程序的。
想必有一定经验的朋友都知道要输出%a%需要这样写“echo %%a%%”,这样
百分号会脱掉一个。

先以一个简单的echo作为引子:
例一、
代码:
@echo off
set a=b
echo %a%
echo %%a%%
echo %%%a%%%
echo %%%%a%%%%
echo %%%%%a%%%%%
pause
运行结果是:
b
%a%
%b%
%%a%%
%%b%%
解说:不知道大家看没看出来问题。批处理中类似于这样的变量替换究竟是

如何进行的呢?我们姑且称之为“替换步骤”

“替换步骤”大体分为两步:

第一步:
       当百分号“%”是偶数时(只按一边的百分号数目计算),变量将

不被替换,其它的也不变。当百分号是奇数时(也只按一边的百分号数目计

),最里层的“%a%”将被替换成变量的值,此时百分号数目将少了一个(

只按一边计)。

第二步:
第一步完成后,百分号就都是偶数了。好了,现在把百分号数目的

一半脱掉,剩下的就是结果了。


拿本例的“echo %%%%%a%%%%%”为例说明一下。第一步,由于百分号有

5个是奇数,因此最里层的%a%被其值代替,现在变为“%%%%b%%%%”;第二

步,将百分号脱去一半,就变为“%%b%%”。怎么样,理解了吗?

 

再看看有call的时候。
例二、
复制内容到剪贴板
代码:
@echo off
set a=b
set b=c
set c=d
call echo %%%%%%%%a%%%%%%%%
call echo %%%%%%%%%%%%%a%%%%%%%%%%%%%
pause
运行结果是:
%%a%%
%%%b%%%
解说:由于有call的存在,“替换步骤”就会多进行一次。以“call echo

%%%%%%%%%%%%%a%%%%%%%%%%%%%”为例。

“替换步骤”第一次:
第一步:
百分号有13个是奇数,因此最里层的“%a%”被其值b替换,此时为

“%%%%%%%%%%%%b%%%%%%%%%%%%”,现在百分号数目为12个了。

第二步:
将百分号数脱去一半,现在为“%%%%%%b%%%%%%”。


“替换步骤”第二次:
第一步:
百分号有6个是偶数,因此不替换。现在仍然是“%%%%%%b%%%%%%”。

第二步:
将百分号数脱去一半,现在为“%%%b%%%”。


结果就是“%%%b%%%”。

(如果有n个call那么就要进行n+1次“替换步骤”。)

 

call命令在“变量延迟”中也遵循“替换步骤”。
举个例子:我现在要将字符串str1的“superhero”部分替换为chess,在此我们用间接的方法实现。代码如下:
复制内容到剪贴板
代码:
@echo off
set str1=mynameissuperhero
set str2=supxrhxro
set a=x
call call set str3=%%%%str1:%%str2:%a%=e%%=chess%%%%
echo %str3%
pause
因为用了两个call,因此要进行3次“替换步骤”。
“替换步骤”第一次:
1、将“%a%”替换成“x”,结果为“%%%%str1:%%str2:x=e%%=chess%%%%”。
2、将百分号脱去一半,为“%%str1:%str2:x=e%=chess%%”。

“替换步骤”第二次:
1、将“%str2:x=e%”替换掉,结果为“%%str1:superhero=chess%%”。
2、将百分号脱去一半,为“%str1:superhero=chess%”。

“替换步骤”第三次:
1、将“%str1:superhero=chess%”替换掉,结果为“mynameischess”。
2、将百分号脱去一半(没的脱了),因此结果为“mynameischess”。
【原文地址http://apps.hi.baidu.com/share/detail/23023925】

【图像去噪】论文精读:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image 论文题目:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image —— FM2S:单噪声图像自监督荧光显微镜去噪arXiv 2024!显微图像去噪!通过可视化详细的细胞结构和生物过程,荧光显微镜具有显着先进的生物学研究。然而,由于难以精确建模固有噪声和获取干净图像进行训练,这种图像去噪任务往往面临挑战,这限制了大多数现有方法。在本文中,我们提出了一种有效的。 阅读详情

相关推荐

RK3568 解决MIPI屏幕开机只显示uboot logo的问题

之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法,这次产品迭代,硬件改版,选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路,事情总是事与愿违,同样的路,遇到新的坑。

fhqlongteng的博客 5425

常用命令 echo、@、call、pause、rem

常用命令 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space(20) 常用的参数界定符 Tab(

chy2z的专栏 1366

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

Batch入门教程丨第二章:认识变量相关概念

在前两期的学习内容中,我们已经了解了Batch入门教程有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,今天我们将继续深入学习Batch入门教程之认识变量相关概念。 前期回顾 ◀Batch入门教程丨部署与Hello World(上) ◀Batch入门教程丨部署与Hello World(下) 进阶 我们在之前所接触到的三个指令仅仅...

zam183的博客 462

技术文档的语言表达:简洁、准确与易懂的平衡艺术

技术文档的语言表达不仅要简洁、准确,还需要能够打破技术壁垒,使不同背景的读者都能理解。这是一项需要技巧和经验的工作,它要求技术作者既要具备扎实的专业知识,又要具备清晰的表达能力。通过不断打磨语言的简洁性、准确性和易懂性,我们能够创造出一份高质量的技术文档,让知识的传递不再受限于语言的障碍。

人心有反复,好在山水有重逢。 4677

深入解析五大ADC芯片架构及其应用场景

本文深入解析了五大ADC芯片架构及其应用场景,包括逐次逼近型ADC、Σ-Δ型ADC、流水线型ADC、闪存型ADC和积分型ADC。通过详细的架构分析和实际应用案例,帮助工程师理解不同ADC芯片的特点和适用场景,提升电路设计效率。

weixin_28702105的博客 355

批处理常用命令

<br />常用命令 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。<br /><br />首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. <br />下面是DOS命令行或批处理中可能会见到的一些特殊标记符: <br />CR(0D) 命令行结束符 <br />Escape(1B) ANSI转义字符引导符 <br />Space(20) 常用的参数界定符 <br />Tab(09) ; =

Present is best Present! 1930

新能源知识库(37)三代储能电芯介绍

2025年储能电芯三代技术演进概述 截至2025年6月,储能电芯已明确划分为三代: 第一代(280Ah):2019-2023年主流,能量密度180Wh/kg,循环寿命8000次,成本降至0.6元/Wh; 第二代(314Ah):2023年起主导,容量超1kWh,能量密度提升20%,循环寿命达15000次,系统成本降低15%; 第三代(500Ah+):2024年量产,能量密度突破440Wh/L(如宁德时代587Ah、阳光电源684Ah),20尺集装箱容量达6-9MWh,零部件成本降30%。 技术路线分化:卷绕派

竹君子之家 7907

批处理中常用命令介绍(Echo、rem、goto、call、pause、if、for)

一、echo命令 Echo :显示当前ECHO的状态:ECHO ON 或者ECHO OFF 。 ECHO ON :ECHO状态设为ON,将显示命令行(如每行前的C:>等类似标志)。 ECHO OFF:CHO状态设为OFF,将不显示命令行(如每行前的C:>等类似标志) 。 ECHO 字符串 :将输入的字符串显示在CMD屏幕上。 ECHO 字符串 &ECHO 字符串 … :&,类似and的意思,逻辑运

_ACME_的博客 4263

高速窄脉冲峰值保持设计

一、目的 在激光探测领域,探测器发出的高速窄脉冲,单片机AD进行采样,很难捕捉到窄脉冲的幅值,即使使用高速AD进行采样,也存在一定的难度。因此,本方案设计了一种高速窄脉冲峰值保持电路,有助于单片机AD采样能很好的捕捉到脉冲幅值。 二、方案分析与比较 峰值保持器一般分为两种:电压型和跨导型。 方案一:电压型峰值保持器,由电压型运放、二极管、保持电容、缓冲器组成,优点是元件成本低,缺点是峰值保持存在过...

weixin_43184208的博客 9292

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5325

echo命令 (

1. Echo :显示当前ECHO的状态:ECHO ON 或者ECHO OFF 。2. ECHO ON :ECHO状态设为ON,将显示命令行(如每行前的C:\>等类似标志)。3. ECHO OFF:CHO状态设为OFF,将不显示命令行(如每行前的C:\>等类似标志) 。4. ECHO 字符串 :将输入的字符串显示在CMD屏幕上。5. ECHO 字符串 &ECHO 字符串 … :...

weixin_30244681的博客 1039

基于摩尔线程 S80 显卡在 Ubuntu 系统下双卡交火部署 DeepSeek

curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。- 为避免模型占用系统盘空间,可将模型存储路径修改到其他磁盘。

靡不有初,鲜克有终 1194

Makefile call函数

引用变量的格式为$(变量名),函数调用的格式如下: $(<function> <arguments>) 或者是 ${<function> <arguments>} 其中,function 是函数名,arguments 是函数的参数,参数之间要用逗号分隔开。而参数和函数名之间使用空格分开。调用函数的时候要使用字符“$”,后面可以跟小括号也可以使用花括号。 $(call <expression>,<parm1>,<...

1283

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

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

__call__()、__getattr__()及内部函数中的变量

1.  __call__、__getattr__    1 class B():    2     def __call__(self, name):    3         return getattr(self, name)    4     5     def a(self, text):    6         print a + text    7     8     def b

navygong的专栏 1764

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

The difference about call by value and call by reference

值传递和引用传递英文介绍

gergerfrgegregfd的博客 458

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

与Eclipse关于"Call Hierarchy"和"Find Reference"功能比较

"Call Hierarchy"功能比较 Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员变量的调用树(caller和callee两个方向)。 IntelliJ IDEA中可以在主菜单中选择Navigate | Call Hierarchy命令查看一个Java方法调用树(caller和callee两个方向),但是不像Eclipse那样可以查...

weixin_33994444的博客 182

认识 Javascript 中的作用域和上下文【转载】

摘要 作用域基于函数。函数的每次调用都是独立的,作用域与函数调用时访问的变量有关,包括局部变量(关键字 var,函数内部),全局变量(关键字 var,函数外部),块内变量(关键字 let,花括号内部)。 上下文基于对象。关键字 this 的值代表了当前上下文中的引用的对象。 以下内容转载自认识 Javascript 中的作用域和上下文【译】 Javascript 中的作用域(scope)...

Armstrong的博客 225

Java方法参数

Java方法参数 首先回顾一下程序设计语言中有关将参数传递给方法的一些专业术语。 1. 按值调用(call by value)表示方法接收的是调用者提供的值。 2. 按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。 一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变脸值。“call by”是一个标准的计算机科学术语,它用来描述各种程序设计语...

Hello World ! 262

go语言html5,前端开发HTML5——函数-Go语言中文社区

20、函数的调用方式(内容尚未完全,可自行百度这方面的知识)call()、apply()、bind() 这三个方法的作用都是改变执行环境中的this指针的指向call()与apply()这两个方法的第一个参数都为this指针指向的目标对象,他们的区别是第二个参数开始传参的方式不同call传参:obj, arg2,arg3,.....apply传参:obj, [arg2,arg3,..... ]fu...

weixin_34861702的博客 205

js考核知识点总结

js考点内容总结

m0_63188530的博客 2528

函数和作用域的笔记

三.prototype 属性(原型) 每一个原型都要一个 prototype 属性 指向对象的引用 四.apply&call apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。它可以通过[] 来访问每一个参数,它可以通过length 来进行遍历 1、基本数据类型 在参数传递基本数据类型的值时,被传递的值会被复制到一个局部变量 2、引用数据类型 在参数传递引用数据类型的值时,会把这个值在内存中的地址复制给局部变量。它不是真正的数组,它是伪数组,因为没有数组的方法。

llx3159361064的博客 80

JavaScript中的值传递

变量的传递分为两种,分别是值传递和引用传递。但是需要注意的一点是,在JavaScript中,只存在值传递,而不存在引用传递!!!这点非常容易迷惑人,于是总结如下:先看例子function changeStuff(a, b, c) { a = a * 10; b.item = "changed"; c = {item: "changed"}; }var num = 10; var obj1

The__Apollo的博客 842

前端开发HTML5——函数

20、函数的调用方式(内容尚未完全,可自行百度这方面的知识) call()、apply()、bind() 这三个方法的作用都是改变执行环境中的this指针的指向 call()与apply() 这两个方法的第一个参数都为this指针指向的目标对象,他们的区别是第二个参数开始传参的方式不同 call传参:obj, arg2,arg3,..... apply传参:obj, [a...

a860320的博客 602

this的用法总结

java中的this Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,

lovechuanyu的专栏 1101

js函数以及参数以及this的取值问题

在讲下面知识之前大家要先明白 变量赋值实际上是把一个变量内存中的值赋值给另一个变量,而这个变量内存中的值可能是基本类型,也可能是地址 变量的类型: *基本类型:变量内存中保存的是基本类型数据。 *引用类型:变量内存中保存的是地址。 在js调用函数时,传递变量参数是只传递 var a=1; function b(a) { a++; } b(a); console.log(a); 在...

weixin_42322521的博客 1101
上一篇: set基本用法
下一篇: 关于if与else
saygoodbyetoyou
博客等级 码龄17年 78粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值