C++之传值调用和引用调用



        如果希望函数能够改变某变量的值,那么相应的形参一定要是引用调用参数。因此必须在参数类型后面加上“&”符号。传值调用形参只是一个局部变量。当一组数据需要多个函数处理时候,也要用引用调用。

      到目前为止我们一直使用传值调用形参,函数调用里的相应的形参可以是一个变量,但函数只使用该变量的值,而且不能以任何方式改变这个变量。使用传值调用时,替代形参的只有实参的值。
     对于一个输入函数,我们希望用变量(而不是变量值)来替代形参。---引用调用机制正是用来解决这类问题的。
   借助引用调用形参,函数调用中的相应实参必须是变量,且这个实参变量将代替形参,就好象是将实参变量逐字逐句赋值到函数定义的函数体中,取代了形参。执行函数体的代码,就可以改变实参变量的值。

#include <iostream>
using namespace std;

void getNumer(int& input1, int& input2)
{
    cout<<"Please input 2 integer"<<endl;
    cin>>input1>>input2;
}


void swapValues(int& var1, int& var2)
{
    int temp;
    temp = var1;
    var1 = var2;
    var2 = temp;
}


void showNunber(int output1, int output2)
{
    cout<<"The swaped numebrs now show are:"<<endl;
    cout<<output1<<" "<<output2;
    cout<<endl;
}


int main()
{
    int fisrtVal;
    int secondVal;
    getNumer(fisrtVal, secondVal);
    swapValues(fisrtVal, secondVal);
    showNunber(fisrtVal, secondVal);
    return 0;
}





 
        程序变量被当作内存单元,每个内存单元都有其一的地址。
        当编译以上程序,变量firstVal和secondVal可能被分配到单元1010和单元1012,实际这些内存单元就是变量。执行函数调用时,传递给函数的并不是实参名,而是一个与各个名字对应的内存单元列表。


     firstVal       ---> 1010 --->input1

    secondVal  ---> 1012 --->input2


     不管函数体对形参进行什么操作,其实都是对内存单元中的变量进行操作。在本例,getNumber()函数体中的命令表示应该使用

cin将某个值存在input1中,也相当于将该值存储在内存单元1010的变量(恰好是变量firstVal)中。因此不管计算机对input1和input2进

行什么操作,都其实是对变量firstVal和secondVal进行的操作。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值