2014年2月9日 星期日

int& a = b 的解釋

以下是在 cplusplus 網頁上看到的

int a = b is setting a's VALUE to b's VALUE
int* a = &b is setting a's VALUE to the ADDRESS of b
int& a = b is setting a's ADDRESS to b's ADDRESS (a is a reference to b)

上面話的用我自己的理解來解釋如下
int& a = b 的用法就是說,將 a 的 address 設定為 b 的 address,換居話說 a 幾乎就跟 b 一模一樣。

用 printf 來表示應該如下

================================
第一個 case int a=b

int b = 5;
int a = b
pintf ( a, b, &a, &b ) 可能會有如下結果

(5, 5, 0xdfe0, 0xad06) 兩個 address 不一樣
================================


================================
第二個 case int* a=b

int b = 5;
int *a = b
pintf ( a, b, &a, &b ) 可能會有如下結果

(0xad06, 5, 0xdfe0, 0xad06)     a 的值就是 b 的 address
================================

================================
第三個 case int& a=b

int b = 5;
int &a = b
pintf ( a, b, &a, &b ) 可能會有如下結果

a = 5, b = 5, &a = 0x2a1ae39c, &b = 0x2a1ae39c
a 就是 b 
================================


第三個 case 我有真的打印來看,不會有問題。

沒有留言:

張貼留言