zoukankan      html  css  js  c++  java
  • C++学习日记--关于值调用和引用调用

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

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

    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. void getNumer(int& input1, int& input2)  
    5. {  
    6.     cout<<"Please input 2 integer"<<endl;  
    7.     cin>>input1>>input2;  
    8. }  
    9.   
    10.   
    11. void swapValues(int& var1, int& var2)  
    12. {  
    13.     int temp;  
    14.     temp = var1;  
    15.     var1 = var2;  
    16.     var2 = temp;  
    17. }  
    18.   
    19.   
    20. void showNunber(int output1, int output2)  
    21. {  
    22.     cout<<"The swaped numebrs now show are:"<<endl;  
    23.     cout<<output1<<" "<<output2;  
    24.     cout<<endl;  
    25. }  
    26.   
    27.   
    28. int main()  
    29. {  
    30.     int fisrtVal;  
    31.     int secondVal;  
    32.     getNumer(fisrtVal, secondVal);  
    33.     swapValues(fisrtVal, secondVal);  
    34.     showNunber(fisrtVal, secondVal);  
    35.     return 0;  
    36. }  

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

         firstVal       ---> 1010 --->input1

        secondVal  ---> 1012 --->input2


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

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

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

  • 相关阅读:
    时期日期相关JS
    linq版本不同,升级后的问题
    Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
    FLASH所支持的HTML标记[转]
    从尘埃里开出花
    鴻海董事長郭台銘先生的話
    一日 :)
    今天休息,一个人在城市里看云 : (
    微软面试题——海盗分金币:)
    我QQ史上见过的最自恋,最芙蓉,最皮厚的人:口水弟: )
  • 原文地址:https://www.cnblogs.com/biubiubiubiu/p/4198628.html
Copyright © 2011-2022 走看看