C++函數-通過值調用和引用調用

有兩種方法可以將值或數據傳遞給C++語言的函數:通過值調用和通過引用調用。 原始值在值調用中不會被修改,但通過引用調用中會被修改。

下面來理解在C++語言中的通過值調用和通過引用調用。

在C++中通過值調用

在值調用中,不修改原始值。
在值調用中,傳遞給函數的值由函數參數本地存儲在堆棧存儲器位置。 如果更改函數參數的值,則僅更改當前函數的值,函數內修改的參數值不會反映到函數的外部。 它不會改變調用方法中的變量的值,如:main()函數。

下面我們通過下面的例子來嘗試理解C++語言中的按值調用的概念:

#include <iostream>  
using namespace std;  
void change(int data);  
int main()  
{  
    int data = 3;  
    change(data);  
    cout << "Value of the data is: " << data<< endl;  
    return 0;  
}  
void change(int data)  
{  
    data = 5;  
}

執行上面代碼,得到以下結果 -

Value of the data is: 3

在C++中通過引用調用

在引用調用中,原始值會被修改,因爲我們是通過引用(地址)來調用的。

這裏,值的地址在函數中傳遞,因此實際和形式參數共享相同的地址空間。 因此,在函數內部改變的值會反映在函數內部以及外部。

注意:要理解通過引用調用,您必須具有指針的基本知識。

通過下面的例子來嘗試理解C++語言中的引用的概念:

#include<iostream>  
using namespace std;    
void swap(int *x, int *y)  
{  
    int swap;  
    swap=*x;  
    *x=*y;  
    *y=swap;  
}  
int main()   
{    
    int x=500, y=100;    
    swap(&x, &y);  // passing value to function  
    cout<<"Value of x is: "<<x<<endl;  
    cout<<"Value of y is: "<<y<<endl;  
    return 0;  
}

執行上面代碼,得到以下結果 -

Value of x is: 100
Value of y is: 500

在C++中通過值調用和通過引用調用的區別

序號

通過值調用

通過引用調用

1

將值的副本傳遞給函數

將值的地址傳遞給函數

2

在函數內部進行的更改不會反映在函數外部

在函數內部進行的更改也反映在函數外部

3

實際和形式參數將在不同的內存位置創建

實際和形式參數將在同一內存位置創建