[筆記] C++學習筆記(傳值、傳址、傳參考)

傳值(Call by Value):
就是把值傳出去(說這不是屁話嗎!),用圖來解釋最清楚了!
地址是變數在記憶體的位置,我們假設都在中山路上好了

上圖的原始碼如下:
people A房子 = 5 ;  //A房子裡面有5個人
people B房子 = 1 ;  //B房子裡面有1個人
B房子 = A房子;      //B房子的內容跟A房子要一樣       
傳值最常用,也最簡單,就只是把A變數的值傳達給B變數

傳址(Call by Value of Pointer or Call by Address):
這就比較特別了,觀念很簡單:指向一個物件,存放另一個物件的位址(c++ primer 4/e p.115),從字面上的意思是「把我的地址丟給你」,同樣圖解比較清楚:

上圖可以看到,我只是把A房子的地址傳給B房子
為了讓B房子是用來存放地址,宣告B房子時,我們會在他的名字前加個*,表示B房子只是存地址之用
上圖的原始碼如下:
people  A房子 = 5 ;  //A房子裡面有5個人
people *B房子 ;     //B房子是個存放地址的變數
B房子 = &A房子;      //B房子的地址跟A房子要一樣       
&的意思是取的A房子的地址,叫做「取址運算子 &
要拿到門牌號碼做什麼用?這好處可多的勒!如此一來B房子就等於是A房子的分身
如此一來,我們只要更動B房子就會連帶更動A房子的東西。其中*B房子=2中的*稱作提領運算子
原始碼如下:

people A房子 = 5 ;  //A房子裡面有5個人
people* B房子 ;     //B房子是個存放地址的變數
B房子 = &A房子;      //B房子的地址跟A房子要一樣
*B房子 = 2;         //B房子指定的地址,他們家的人只有兩個人 
B房子 = 0;          //B房子不指向任何地址          


傳址案例:
第一行顯示: x=3 沒問題
第二行顯示: x的位址
第三行顯示: y的位址(因為他是指標變數不用加上&)
第四行顯示: y儲存x的位址



傳參考(Call by Reference):
參考(參照)的作用,就是讓物件取一個別名(alias),會在變數前面加上一個「


people A房子 = 5 ;       //A房子裡面有5個人
people &B房子 = A房子 ;   //B房子為A房子的別名      

可以發現,B跟A根本就是一樣的東西,只是名稱不同而已,因此我們對B進行修改,A也會跟著修改。

B房子 = 100 ;       //B房子裡面有100個人
cout >> A ;   //A房子也會變成100個人      

參考教學:
筆記那克斯的學習筆記
http://disp.cc/b/Knuckles_note#11-Lw
http://disp.cc/b/Knuckles_note#11-LH
http://disp.cc/b/Knuckles_note#11-M5

提醒

本站內容即日起將轉到另一站上轉跳~