C++讲解——值传递与引用

C++讲解——值传递与引用传递

哈罗哈 大家学到了这一块的知识点了 我最近保持了高更很开心。
在学这个知识点之前,我们先回顾一下上两篇函数中的实参与形参。

为什么要使用引用传递?

一般来说,函数是通过return来输出自己计算出来的值的,当没有return的时候,也就是这种函数:

 # include<iostream>
 using namespace std;
 void fuction(int x){
 	//函数体
 }
 int main(){
	 int a
	 fuction(a)
	 cout << "请输出x"<< x
	 cout << "请输出a"<< a
}

那么这个形参x其实是没有办法改变实参a的。因为在这里传递值的口子只有单向的,就是实参传递给形参,而不是形参传递给实参。
如果我们想替换的话,就会可以用这个符号&进行引用

#include <iostream>
using namespace std;

void modifyReference(int &x) {
    x = 100; // 修改的是原始变量
}

int main() {
    int a = 10;
    modifyReference(a);
    cout << a << endl; // 输出 100,原始变量被修改
    return 0;
}

这样形参x就可以改变实参a了。
这是一个超级简单的启动教程,你可以自己试试看,感受一下代码的运行。

引用传递的原理

在上面的代码,在类型名后面添加 & 进行声明的变量 x 为引用对象。
引用对象不可以自己建造房子,它会在别人的房子上贴上自己的名称,这里的“房子”就指对象。上面的代码中,我们要调用modifyReference时候,就是让a成为了x的别名了。
引用原理讲述

值传递和引用传递的区别

这两种情况下的函数最大的不同点如下。值传递:不可以覆盖实参的值。引用传递:可以覆盖实参的值。 所以在实际使用中,我们要谨慎使用引用传递,在需要改变实参值的时候再使用。

值传递的应用

这里有一个代码示例,就是实现将变量a,b,c从小到大重新赋值的功能。

#include <iostream>
using namespace std;

//--- 交换参数 x 和 y 的值 ---//
void swap(int& x, int& y)
{
    int t = x;
    x = y;
    y = t;
}

//--- 按升序排列参数 a、b、c ---//
void sort(int& a, int& b, int& c)
{
    if (a > b) swap(a, b); // 1
    if (b > c) swap(b, c); // 2
    if (a > b) swap(a, b); // 3
}

int main()
{
    int a, b, c;
    cout << "变量a:";   cin >> a;
    cout << "变量b:";   cin >> b;
    cout << "变量c:";   cin >> c;

    sort(a, b, c);      // 按升序排列 a、b、c

    cout << "按升序重新排列变量a、b、c。\n";
    cout << "变量a的值为 " << a << "\n";
    cout << "变量b的值为 " << b << "\n";
    cout << "变量c的值为 " << c << "\n";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值