日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中的值传递、指针传递、引用传递

發(fā)布時(shí)間:2025/3/21 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中的值传递、指针传递、引用传递 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Language: C++

數(shù)值傳遞

  • 值傳遞
  • 指針傳遞
  • 引用傳遞

定義

值傳遞

形參是實(shí)參的拷貝,改變形參的值并不會影響外部實(shí)參的值。從被調(diào)用函數(shù)的角度來說,值傳遞是單向的(實(shí)參->形參),參數(shù)的值只能傳入,

不能傳出。當(dāng)函數(shù)內(nèi)部需要修改參數(shù),并且不希望這個(gè)改變影響調(diào)用者時(shí),采用值傳遞。

指針傳遞

形參為指向?qū)崊⒌刂返闹羔?#xff0c;當(dāng)對形參的指向操作時(shí),就相當(dāng)于對實(shí)參本身進(jìn)行的操作。

指針傳遞參數(shù)本質(zhì)上是值傳遞的方式,它所傳遞的是一個(gè)地址值。值傳遞過程中,被調(diào)函數(shù)的形式參數(shù)作為被調(diào)函數(shù)的局部變量處理,即在棧中開辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進(jìn)來的實(shí)參的值,從而成為了實(shí)參的一個(gè)副本。值傳遞的特點(diǎn)是被調(diào)函數(shù)對形式參數(shù)的任何操作都是作為局部變量進(jìn)行,不會影響主調(diào)函數(shù)的實(shí)參變量的值。(這里是在說實(shí)參指針本身的地址值不會變)

引用傳遞

形參相當(dāng)于是實(shí)參的“別名”,對形參的操作其實(shí)就是對實(shí)參的操作。在引用傳遞過程中,被調(diào)函數(shù)的形式參數(shù)雖然也作為局部變量在棧中開辟了內(nèi)存空間,但是這時(shí)存放的是由主調(diào)函數(shù)放進(jìn)來的實(shí)參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過棧中存放的地址訪問主調(diào)函數(shù)中的實(shí)參變量。正因?yàn)槿绱?#xff0c;被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的實(shí)參變量。

實(shí)例

#include<iostream> using namespace std; //值傳遞void change1(int n){cout<<"值傳遞--函數(shù)操作地址"<<&n<<endl; //顯示的是拷貝的地址而不是源地址 n++; }//引用傳遞 void change2(int & n){cout<<"引用傳遞--函數(shù)操作地址"<<&n<<endl; n++; }//指針傳遞 void change3(int *n){cout<<"指針傳遞--函數(shù)操作地址 "<<n<<endl; *n=*n+1;} int main(){int n=10;cout<<"實(shí)參的地址"<<&n<<endl;change1(n);cout<<"after change1() n="<<n<<endl;change2(n);cout<<"after change2() n="<<n<<endl;change3(&n);cout<<"after change3() n="<<n<<endl;return true; } 復(fù)制代碼

運(yùn)行結(jié)果:

實(shí)參的地址0x7ffee9a7a9b8 值傳遞--函數(shù)操作地址0x7ffee9a7a96c after change1() n=10 引用傳遞--函數(shù)操作地址0x7ffee9a7a9b8 after change2() n=11 指針傳遞--函數(shù)操作地址 0x7ffee9a7a9b8 after change3() n=12 復(fù)制代碼

Reference

  • C++ 值傳遞、指針傳遞、引用傳遞詳解

總結(jié)

以上是生活随笔為你收集整理的C++中的值传递、指针传递、引用传递的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。