作者suhorng ( )
看板C_and_CPP
標題Re: [問題] 找記憶體位置
時間Sun Nov 29 11:48:37 2009
※ 引述《devilarise (Devil)》之銘言:
: 而如果寫成 int* b = &a;的話
: 視為一種傳址的動作
: 從此a跟b兩個變數的記憶體位址
: 同時指向0x123456這個位置上
怪怪的 ...
那如果
int a;
int b = (int) &a; 呢 ?
也許是中文翻譯的問題,
一般我們說傳值、傳址、傳參照是 call by value, call by address,
call by reference 的中譯,通常用來指呼叫函式時的參數傳遞。
'=' 為賦值, assign
而我賦的值是 &a, 一個位址, 但是也是一個值啊
你也可以這樣用
int a;
int b = (int) &a;
*( (int*) b ) = 5;
這種寫法當然不好,但是這是合乎語法的。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.67.217
→ VictorTom:其實還是少講Call by Address比較好一點, 這個其實也是 11/29 12:15
→ VictorTom:一種誤用的樣子, 雖然可以知道是在只int*那個例子XD 11/29 12:16
→ suhorng:嗯這個我這個寫法很差XD 11/29 12:23
推 VictorTom:其實, 拿int存pointer, 或者pointer其實只是個int這種寫 11/29 12:25
→ VictorTom:法不會沒有喔, 尤其用在資料傳遞雙方無法認知對方的型態 11/29 12:25
→ VictorTom:或者只是要記碌address以供其他資結或函數使用:) 11/29 12:26