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

C++ 引用传参机制

很好,接下来我将为你扩展这两个代码版本(指针传参和引用传参),分别打印出:

  1. 变量本身的地址和值
  2. 参数类型名称(用 typeid
  3. 指针或引用的地址和值
  4. 解引用后的值(对指针)
  5. 全部带详细中文注释

✅ 一、指针版本(int*

#include <iostream>
#include <typeinfo>  // 用于 typeid
using namespace std;// 接收一个 int 型指针
void func(int* a) {cout << "\n[函数 func - 指针传参]" << endl;// 打印 a 的类型cout << "类型(typeid(a)):" << typeid(a).name() << endl;// a 是一个指针,打印它自己的值(指向谁)和地址(自己的地址)cout << "a 的值(即指向对象的地址): " << a << endl;cout << "a 本身的地址(指针变量的地址): " << &a << endl;// 解引用 a,打印 a 所指对象的值cout << "*a(解引用,访问 x 的值): " << *a << endl;
}int main() {int x = 42;  // 普通整型变量cout << "[主函数 main]" << endl;cout << "x 的值: " << x << endl;cout << "x 的地址: " << &x << endl;func(&x);  // 传入 x 的地址return 0;
}

✅ 二、引用版本(int&

#include <iostream>
#include <typeinfo>
using namespace std;// 接收一个 int 类型的引用
void func(int& a) {cout << "\n[函数 func - 引用传参]" << endl;// 打印 a 的类型cout << "类型(typeid(a)):" << typeid(a).name() << endl;// a 是 x 的别名,打印它的值和地址cout << "a 的值: " << a << endl;cout << "a 的地址(即 x 的地址): " << &a << endl;// 注意:不能对引用做“解引用”操作,a 本身就是变量,直接用即可
}int main() {int x = 42;cout << "[主函数 main]" << endl;cout << "x 的值: " << x << endl;cout << "x 的地址: " << &x << endl;func(x);  // 直接传变量return 0;
}

✅ 示例输出说明(示意):

🔹 指针传参输出:

[主函数 main]
x 的值: 42
x 的地址: 0x7ffee6b48d4c[函数 func - 指针传参]
类型(typeid(a)):Pi         // Pi = pointer to int
a 的值(即指向对象的地址): 0x7ffee6b48d4c
a 本身的地址(指针变量的地址): 0x7ffee6b48d40
*a(解引用,访问 x 的值): 42

🔹 引用传参输出:

[主函数 main]
x 的值: 42
x 的地址: 0x7ffee6b48d4c[函数 func - 引用传参]
类型(typeid(a)):i          // i = int
a 的值: 42
a 的地址(即 x 的地址): 0x7ffee6b48d4c

✅ 总结图表:

内容指针方式 (int*)引用方式 (int&)
传入方式func(&x)func(x)
类型(typeid)Pi(Pointer to int)i(int)
参数本身的地址&a 是新地址(func 内部)&a&x 相同
参数本身的值是地址是变量的值
解引用操作需要 *a不需要,a 本身就是变量
是否可以修改原值✅ 是✅ 是

相关文章:

  • Linux服务:Nginx服务重写功能
  • 【el-admin】el-admin关联数据字典
  • (undone) MIT6.S081 Lec17 VM for APP 学习笔记
  • 基于nodejs + Koa +Nuxt3的订单系统项目实战
  • 数据结构每日一题day17(链表)★★★★★
  • epic_kitchens_sounds数据集中对segment标签的处理:时间维度和特征维度的转换
  • onResume()和 onPause()的触发条件
  • 一文掌握 LVGL 9 的源码目录结构
  • 【网络入侵检测】基于源码分析Suricata的IP分片重组
  • ArcScroll: 弧形滑动控件
  • 「Mac畅玩AIGC与多模态27」开发篇23 - 多任务摘要合成与提醒工作流示例
  • 大白话解释CPU、NPU和GPU
  • C++(1):整数常量
  • 【C语言】--指针超详解(三)
  • FreeRTOS菜鸟入门(十四)·事件
  • 计算机组成:CU与ALU
  • STL-vector
  • Midjourney-V7:支持参考图片头像或背景生成新保真图
  • 热蛋白质组分析(TPP)技术的优劣势探讨
  • 深入理解 Vue 全局导航守卫:分类、作用与参数详解
  • 呼和浩特推进新一轮国企重组整合:杜绝一项目一公司、一业务一公司
  • 新城市志|上海再攻坚,营商环境没有最好只有更好
  • 春秋航空:如果供应链持续改善、油价回落到合理水平,公司补充运力的需求将会增长
  • 融创中国:今年前4个月销售额约112亿元
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 专访|高圆圆:像鸟儿一样,柔弱也自由