鍍金池/ 教程/ C++/ C++函數(shù)-通過(guò)值調(diào)用和引用調(diào)用
C++用戶定義異常
C++ this指針
C++存儲(chǔ)類
C++函數(shù)
C++交換變量值
C++ continue語(yǔ)句
C++注釋
C++函數(shù)遞歸
C++ goto語(yǔ)句
C++函數(shù)-通過(guò)值調(diào)用和引用調(diào)用
C++重載
C++語(yǔ)言歷史
C++反轉(zhuǎn)數(shù)字
C++ try/catch語(yǔ)句
C++是什么?
C++變量
C++ break語(yǔ)句
C++運(yùn)算符
C++第一個(gè)程序
C++繼承
C++虛函數(shù)
C++將十進(jìn)制轉(zhuǎn)換為二進(jìn)制
C++矩陣乘法
C++對(duì)象和類
C++基礎(chǔ)輸入輸出(cin,cout,endl)
C++文件和流
C++求素?cái)?shù)
C++ if/else語(yǔ)句
C++友元函數(shù)
C++命名空間
C++面向?qū)ο蟾拍?/span>
C++階乘
C++關(guān)鍵字
C++重載
C++聚合
C++結(jié)構(gòu)體
C++的特點(diǎn)(特性)
C++打印字母表三角
C++ switch語(yǔ)句
C++多態(tài)
C++ do-while循環(huán)
C++字符串
C++ static關(guān)鍵字
C++錯(cuò)誤處理
C++ for循環(huán)
C語(yǔ)言與C++的區(qū)別
C++ while循環(huán)
C++開(kāi)發(fā)環(huán)境的安裝
linux環(huán)境下編譯C++ 程序
C++枚舉
C++指針
C++斐波納契數(shù)列
C++阿姆斯壯數(shù)字
C++接口
C++教程
C++數(shù)組
C++數(shù)據(jù)抽象
C++回文程序?qū)嵗?/span>
C++打印數(shù)字三角
C++將數(shù)組傳遞到函數(shù)
C++多維數(shù)組
C++將數(shù)字轉(zhuǎn)換字符

C++函數(shù)-通過(guò)值調(diào)用和引用調(diào)用

有兩種方法可以將值或數(shù)據(jù)傳遞給C++語(yǔ)言的函數(shù):通過(guò)值調(diào)用和通過(guò)引用調(diào)用。 原始值在值調(diào)用中不會(huì)被修改,但通過(guò)引用調(diào)用中會(huì)被修改。

下面來(lái)理解在C++語(yǔ)言中的通過(guò)值調(diào)用和通過(guò)引用調(diào)用。

在C++中通過(guò)值調(diào)用

在值調(diào)用中,不修改原始值。
在值調(diào)用中,傳遞給函數(shù)的值由函數(shù)參數(shù)本地存儲(chǔ)在堆棧存儲(chǔ)器位置。 如果更改函數(shù)參數(shù)的值,則僅更改當(dāng)前函數(shù)的值,函數(shù)內(nèi)修改的參數(shù)值不會(huì)反映到函數(shù)的外部。 它不會(huì)改變調(diào)用方法中的變量的值,如:main()函數(shù)。

下面我們通過(guò)下面的例子來(lái)嘗試?yán)斫釩++語(yǔ)言中的按值調(diào)用的概念:

#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;  
}

執(zhí)行上面代碼,得到以下結(jié)果 -

Value of the data is: 3

在C++中通過(guò)引用調(diào)用

在引用調(diào)用中,原始值會(huì)被修改,因?yàn)槲覀兪峭ㄟ^(guò)引用(地址)來(lái)調(diào)用的。

這里,值的地址在函數(shù)中傳遞,因此實(shí)際和形式參數(shù)共享相同的地址空間。 因此,在函數(shù)內(nèi)部改變的值會(huì)反映在函數(shù)內(nèi)部以及外部。

注意:要理解通過(guò)引用調(diào)用,您必須具有指針的基本知識(shí)。

通過(guò)下面的例子來(lái)嘗試?yán)斫釩++語(yǔ)言中的引用的概念:

#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;  
}

執(zhí)行上面代碼,得到以下結(jié)果 -

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

在C++中通過(guò)值調(diào)用和通過(guò)引用調(diào)用的區(qū)別

序號(hào) 通過(guò)值調(diào)用 通過(guò)引用調(diào)用
1 將值的副本傳遞給函數(shù) 將值的地址傳遞給函數(shù)
2 在函數(shù)內(nèi)部進(jìn)行的更改不會(huì)反映在函數(shù)外部 在函數(shù)內(nèi)部進(jìn)行的更改也反映在函數(shù)外部
3 實(shí)際和形式參數(shù)將在不同的內(nèi)存位置創(chuàng)建 實(shí)際和形式參數(shù)將在同一內(nèi)存位置創(chuàng)建