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

C++中指针传递与引用传递的区别

1. 指针传递与引用传递的本质区别

指针传递

  • 传递的是指针变量(存储内存地址的变量)
  • 函数内部需用*解引用才能修改原始数据
  • 指针本身可以被修改(如指向其他地址)
  • 可以传递nullptr(空指针)

引用传递

  • 传递的是原始变量的别名(不是地址)
  • 函数内部直接操作原始变量,无需解引用
  • 引用一旦绑定,不能重新绑定到其他变量
  • 不能传递nullptr(总是引用有效对象)

2. 语法上的关键区别

指针传递

void func(int* p) { *p = 10; // 修改指针指向的值p = nullptr; // 修改指针本身
}
// 调用:int a = 5; func(&a);

引用传递

void func(int& r) { r = 10; // 直接修改原始变量// r = nullptr; // 错误:引用不能设为nullptr
}
// 调用:int a = 5; func(a);

3. 为什么说它们不是"都是地址传递"

  • 指针传递:传递的是"地址的地址"(指针变量本身存储了地址)
  • 引用传递:传递的是"别名",不是地址。引用是原始变量的直接别名,没有额外的地址层级

4. 实际使用中的区别

  1. 空指针问题

    • 指针传递:可以传递nullptr,需在函数内检查
    • 引用传递:不能传递nullptr,总是引用有效对象
  2. 修改能力

    • 指针:可以修改指针本身(让它指向其他地址)
    • 引用:不能修改引用(只能修改引用指向的值)
  3. 代码可读性

    • 指针:需记住用*解引用,容易出错
    • 引用:直接使用变量名,更直观

5. 简单总结

特性指针传递引用传递
本质传递地址传递别名
语法Type*Type&
是否可以为NULL可以不可以
是否可以修改指向可以不可以
代码可读性较低较高

关键区别:指针传递是"传递一个地址",引用传递是"传递一个别名"。虽然两者都与地址相关,但语义完全不同。引用传递更安全、更直观,是C++中推荐的参数传递方式。

http://www.dtcms.com/a/450520.html

相关文章:

  • 云南建设局网站首页网页浏览器主要通过ftp协议
  • 网站建设先航科技贵阳制作网站的公司
  • 做网站建设有哪些公司好耒阳住房与建设局网站
  • Helm入门
  • SpringBoot项目搭建
  • 网站导航菜单兰品牌建设助力高质量发展
  • 小游戏网站网址今天的头条新闻
  • 中专网站建设课程东莞网站系统后缀
  • 广州市学校网站建设公司网站html5自适应屏幕大小
  • 网站推广合作花钱做网站注意些什么
  • 上海缔客网站建设公司刚刚
  • C语言入门教程(第1讲):最通俗的C语言常见概念详解与实战讲解
  • 在华图做网站编辑网页设计于制作课程标准
  • 中国建设报社网站建筑工程公司注册资金要求
  • 虚拟麦克风驱动下载,支持将手机话筒映射成PC端麦克风
  • 网站开发整套视频仓库管理erp系统使用
  • 建立网站纯文字版本网页设计代码放图片
  • 公司微信网站建设方案模板下载长沙网站建设案例
  • 四大门户网站排名微信小程序应用开发
  • 建设网站需要数据库备份动漫制作专业认知报告
  • UE HTML5开发二:双向通信调用V1.0
  • 泉州企业自助建站深圳专业做网站技术
  • 【分立元件反馈类型的判断】2023-2-19
  • 想学网络营销网站建设免费做详情页的软件
  • 如何注册网站怎么注册公众号江苏建设信息网站
  • h5开发网站优点网站建设资金投入
  • UNIX下C语言编程与实践33-UNIX 僵死进程预防:wait 法、托管法、信号忽略与捕获
  • 手机如何建免费网站做外贸网站信息
  • 深圳做电子工厂的网站在网站留外链怎么做
  • 贵州中航建设集团网站广告传媒公司的网站应该怎么做