稀稀落落:: 2022-07-11 01:47 采纳率: 100%
浏览 58
已结题

引用传递与地址传递本质没有区别吗

在C++中函数的“引用传递”的本质就是一个指针常量 指向的是特定的内存并且,可以修改其中的数据 而在“地址传递”中也是指向特定地址,可以修改数据,而不可以修改指向,我很疑惑,可不可以说其实“引用传递”就是“地址传递”呢?如果不是,那么他们区别在哪里呢?
#include

using namespace std;
#include
//交换函数
//1.值传递
void swap01(int num1, int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
cout << "值传递交换数据" << "a=" << num1<< "\tb=" <<num2<<'\n'<< endl;

}

//2,地址传递
void swap02(int *num1,int *num2)
{
int * p = num1;
*num1 = *num2;
*num2 = *p;
cout << "地址传递交换数据" << "a=" << *num1 << "\tb=" << *num2 << '\n' << endl;
*num1 = 30;
*num2 = 40;

}

//3.引用传递
void swap03(int& num1, int& num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
cout << "引用传递交换数据" << "a=" << num1 << "\tb=" << num2 << '\n' << endl;
num1 = 50;
num2 = 60;

}

//总结:值传递形参不会修饰实参 地址传递与引用传递 形参会修饰实参
int main()
{
int a = 10, b=20;
cout << "原始数据" << "a=" << a << "\tb=" << b<<'\n'<<endl;
swap01(a, b);//值传递形参不会改变实参
cout << "值传递交换之后的原始数据" << "a=" << a << "\tb=" << b << '\n'<<endl;

swap02(&a, &b);//值传递形参改变实参也会改变
cout << "地址传递交换后数据" << "a=" << a << "\tb=" << b<<'\n'<<endl;

swap03(a, b);//引用传递形参会修饰实参
cout << "引用传递交换后数据" << "a=" << a << "\tb=" << b << '\n' << endl;

return 0;

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 真相重于对错 2022-07-11 09:31
    关注

    我认为c++之所以提供引用,主要因为有重载操作符存在。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 提问应符合社区要求 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题