以下是在 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 我有真的打印來看,不會有問題。
沒有留言:
張貼留言