線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:683
推到 Plurk!
推到 Facebook!

pass by reference的問題(非pass by address)

尚未結案
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-25 17:43:40 IP:61.57.xxx.xxx 未訂閱
首先請看一下底下的code  
int test(int &a)
{
  printf("%d\n", &a);
  printf("%d\n", a);
  return a  = 10;
}    int main(int argc, char* argv[])
{
  int b = 100;
  int &c = b;//我對這一行感到好奇
  printf("%d\n", &b);
  printf("%d\n", &c);
  printf("%d\n", test(b));//這行跟上面那行一樣讓我好奇
  printf("%d\n", b);
  getchar();
  return 0;
} 
 
我所好奇的是上面的 &c = b,書上所說的是這樣b, c兩個變數的位置是在同一個位置上。可是b不是100嗎??這樣 &c 為什麼不是在 0x00000064 這個位置上呢??如果兩個變數要在同一個位置上,為什麼不是 &c = &b 這樣的敘述句呢?? 發表人 - chimera 於 2003/11/25 17:45:26
collonil
中階會員


發表:13
回覆:56
積分:63
註冊:2003-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-27 14:43:19 IP:61.220.xxx.xxx 未訂閱
c是b的別名, 也就是說它們參考記憶體中的同一個位置, 所以對c存取就相當於對b存取, 100(0x64)是該位置所存放的值, 而不是位置, &b才是b在記憶體中的位置...    至於為什麼是int &c = b這種寫法, 我想就是定義吧..    -- BCB學習中~~
系統時間:2024-11-23 9:54:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!