看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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