C語言 值傳遞 位址傳遞

2021-08-21 12:53:03 字數 870 閱讀 7037

1.值傳遞

void exchg1(int

x, int

y)main()

呼叫exchg1(a,b)有乙個隱含的操作就是int x=a;int y=b;然後函式內部把形參x和y的值對換。所以a和b的值各自不變。

2.位址傳遞

void exchg2(int

*px, int

*py)

main()

同樣的,呼叫exchg2(int *px, int *py)的隱含操作就是,int *px=&a , int *py=&b;即把a、b的位址分別傳給了px、py。之後在函式體內一直是對指標px,py進行操作。也就是對a,b的位址進行的操作。

可以理解成變數a、b的具體值(盤子上的東西)對應的是兩塊位址。你只有調換盤子上的東西才能完成真正的替換。

3.引用傳遞

void exchg3(int &x, int &y)

main()

本例中:與值傳遞相比,**上只有只有一處不同,即函式定義處:void exchg3(int &x, int &y)

exchg3函式的定義處exchg3(int&x, int &y)。呼叫時我們可以像值傳遞(如: exchg1(a, b); )一樣呼叫函式(如: exchg3(a,b);)。但是x、y前都有乙個取位址符號「&」。有了這個,呼叫exchg3時函式會將a、b 分別代替了x、y了,我們稱:x、y分別引用了a、b變數。這樣函式裡操作的其實就是實參a、b本身了,因此函式的值可在函式裡被修改

*/

c 值傳遞 位址傳遞 引用傳遞

一.函式引數傳遞方式之一 值傳遞 1 值傳遞的乙個錯誤認識 先看題一中exchg1函式的定義 void exchg1 int x,int y 定義中的x,y變數被稱為exchg1函式的形式引數 問 你認為這個函式是在做什麼呀?答 好像是對引數x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b...

C 值傳遞 位址傳遞 引用傳遞

昨天遇到乙個問題 程式一 char str 256 char sp str visitdepart rs,rs.column,sp static void visitdepart result t rs,int num,char spx note 這個程式表面上看是沒有錯誤的,但是,我用它做了樹的深...

C語言 關於值傳遞和位址傳遞

初學者在學習c語言時候乙個極容易迷惑的地方就在函式的 值傳遞 和 位址傳遞 了,出現這個迷惑的原因有些教材沒有把記憶體圖畫出來,只是簡單的舉了幾個例子,結果初學者按照例子寫寫 倒是能執行出來,但始終沒明白到底是怎麼回事,下面我通過例子和畫圖來相信說明裡面的細節問題。在開始之前有乙個前提,你一定要粗略...