news 2026/4/3 3:20:02

简单理解:用指针时,什么时候加*,什么时候不加*

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简单理解:用指针时,什么时候加*,什么时候不加*

函数只需要 “哪个 ADC” 的地址(指针),而XT_ADCx本身就是指针,直接传就行;只有当你要 “修改 / 访问 ADC 内部的寄存器(结构体内容)” 时,才需要加*(或用->简写)

用 “最直白的规则 + 对比例子”,帮你彻底分清 “加不加*”:

一、核心规则(记死这 2 条,不会错)

操作目的XT_ADCx的处理加不加*
告诉函数 “操作哪个 ADC”(传地址)直接用XT_ADCx不加*
操作 ADC 内部的寄存器(读 / 写)解引用指针*(或->

二、对比例子(结合你熟悉的代码)

1. 不加*的场景:传地址(告诉函数 “哪个 ADC”)

ADC_ClockCmd(XT_ADCx, ENABLE);

  • 目的:告诉函数 “给 XT_ADCx 绑定的这个 ADC 开时钟”;
  • 函数只需要 “ADC 的地址” 来识别硬件,不需要碰 ADC 内部的寄存器;
  • XT_ADCx本身就是指针(存着地址),所以直接传,不加*
2. 加*(或->)的场景:操作寄存器(改 / 读内容)

之前代码里操作 ADC 寄存器的写法,本质都是加了*解引用:

// 场景1:开启 ADC(操作控制寄存器 CR) XT_ADCx->CR |= (1 << 0); // -> 是 (*XT_ADCx).CR 的简写,隐含了 * // 等价于:(*XT_ADCx).CR |= (1 << 0); (直接加 * 解引用) // 场景2:读采样结果(访问数据寄存器 DR) uint16_t adc_val = XT_ADCx->DR; // 同样隐含 * // 等价于:uint16_t adc_val = (*XT_ADCx).DR; // 场景3:等转换完成(查状态寄存器 SR) while (!(XT_ADCx->SR & (1 << 1))); // 还是隐含 *
  • 目的:修改 / 读取 ADC 内部的寄存器(结构体里的内容);
  • 必须通过*(或->)解引用指针,才能找到 ADC 内部的寄存器,所以要加*

三、再用 “钥匙类比” 巩固

  • XT_ADCx= 汽车钥匙(存着汽车地址);
  • 不加*:把钥匙直接给别人(函数),告诉别人 “去操作这把钥匙对应的车”(比如给车通电 = 开时钟);
  • *(或->):用钥匙打开车门,操作车里的设备(比如拧点火开关 = 开启 ADC,看仪表盘 = 读采样结果)。

四、一句话最终总结

ADC_ClockCmd(XT_ADCx, ENABLE);不加*,是因为函数只需要 “钥匙”(指针 / 地址)来识别 ADC;只有当你要 “用钥匙打开 ADC,操作里面的寄存器” 时,才需要加*(或->)。

以后遇到类似场景,直接套规则:

  • 传地址给函数 → 不加*
  • 操作指针指向的内容(寄存器 / 变量) → 加*(或->)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 22:16:39

Git commit规范实践:在PyTorch-CUDA环境中进行版本控制

Git commit规范实践&#xff1a;在PyTorch-CUDA环境中进行版本控制 在深度学习项目日益复杂的今天&#xff0c;一个模型能否快速迭代、稳定复现、顺利上线&#xff0c;往往不只取决于算法设计本身&#xff0c;更依赖于背后的工程体系是否健全。我们常常遇到这样的场景&#xff…

作者头像 李华
网站建设 2026/4/2 12:51:48

Gitee:国产项目管理工具如何破解企业协同效率困局

Gitee&#xff1a;国产项目管理工具如何破解企业协同效率困局 当前中国企业正面临数字化转型的关键阶段&#xff0c;项目管理工具作为企业研发效率的"加速器"&#xff0c;其选择直接影响团队协作效能与产品交付质量。在众多解决方案中&#xff0c;Gitee凭借其本土化基…

作者头像 李华
网站建设 2026/4/2 22:48:05

PyTorch-CUDA镜像能否用于强化学习项目开发

PyTorch-CUDA镜像能否用于强化学习项目开发 在当前AI研发节奏日益加快的背景下&#xff0c;一个常见的现实问题是&#xff1a;我们能否跳过繁琐的环境配置&#xff0c;直接投入强化学习算法的设计与实验&#xff1f; 尤其当团队成员使用不同操作系统、显卡型号各异、CUDA版本混…

作者头像 李华
网站建设 2026/4/2 0:34:40

细胞热迁移(CETSA)实验

细胞热迁移&#xff08;CETSA&#xff09;实验是一种通过检测蛋白质在加热后溶解度变化来分析其热稳定性和与小分子相互作用的技术。背景说明CETSA的原理建立在一个经典的生化概念之上&#xff1a;蛋白质与其配体&#xff08;如药物&#xff09;结合后&#xff0c;其热稳定性通…

作者头像 李华
网站建设 2026/4/2 11:10:11

大模型原理

当我们谈起大模型的原理&#xff0c;迎面而来的是一系列专有名词&#xff0c;例如Transformer 架构、自注意力机制 (Self-Attention)、预训练 (Pre-training)、有监督微调 (SFT)、人类反馈强化学习 (RLHF)、Token 化 (Tokenization)、嵌入向量 (Embeddings)、上下文窗口 (Conte…

作者头像 李华
网站建设 2026/4/1 7:54:14

云计算运维这个职业变得越来越重要,学云计算运维可以做什么工作?

伴随着云计算技术的飞速发展&#xff0c;云计算运维这个职业变得越来越重要&#xff0c;它是企业内部IT部门中负责维护和管理云计算基础设施的关键人员&#xff0c;拥有非常不错的发展空间&#xff0c;那么学云计算运维可以做什么工作?具体请看下文。 1、云计算工程师 职责&a…

作者头像 李华