C++ 初学者指南 第六篇(3)

本文深入探讨C++中利用指针进行传引用的技术,通过实例展示如何在函数外部修改变量值,同时解释了传引用与传值的区别,并提供了实践代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

必备技能6.3:使用指针来实现传引用
    虽然在C++中缺省的方式是值传递,但是我们可以通过传递参数的地址来实现传引用。通过这种方式我们可以在函数之外修改函数中变量的值。我们在前面讨论传递指针到函数中的时候看到过这样的例子。传递指针到函数中其实是和传递其它类型的数据是一样的。当然,需要我们把函数的形参声明为指针的类型。
    为了更加深刻理解为什么传递指针可以手动地实现传引用的功能,我们可以研究一下下面的函数swap()。这个函数用来交换两个指针指向变量的值。下面就是一种实现方法:

void swap( int *x,int *y)
{
    int temp;
    temp = *x; //把x地址中的值保存在temp中
    *x = *y;   //把y地址中的值复制给x地址
    *y = temp;  //把temp的值赋值给y地址
}

swap()函数的参数是两个指针:x和y。通过使用这两个参数来实现传入的指针指向地址的值的交换。在这里需要注意*x,*y指的是由x和y指向的变量,因此表达式

*x = *y;
是把y指向的变量的值赋值给x指针指向的变量。这样一来,当函数执行完毕的时候,调用该函数时传入的变量的内容就会被交换了。
 既然swap()函数需要的是两个指针,我们必须在调用函数swap()的时候传入想要交换值的两个变量的地址。正确的调用方法如下面的程序所示:
//该程序演示使用指针来实现交换值的函数swap()

#include <iostream>
using namespace std;
//声明函数swap()使用指针作为参数
void swap( int *x,int *y);
int main()
{
    int i, j;
    i = 10;
    j = 20;
    cout <<"Initial values of i and j: ";
    cout << i << ' ' << j << '\n';
    swap(&j,&i);
    
    cout <<  "Swapped values of i and j : ";
    cout << i << ' ' << j << '\n';
    return 0;
}

在main()函数中,变量i,j分别被赋值为10,20。然后使用了i和j的地址来调用函数swap()。其中的单目运算符&得到的是变量的地址。因此,我们传递给swap()函数的是变量i,j的地址而不是值。当函数swap()返回的时候,变量i和j的值就被交换了。程序的输出结果如下:
Initial values of i and j: 10 20
Swapped values of i and j : 20 10

练习:
   1. 什么是值传递?
   2. 什么是引用传递?
   3. C++中缺省的参数传递方式是那种方式?

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值