看板 C_and_CPP 關於我們 聯絡資訊
int num [] = {1,2,3,4}; int *ptr = num; cout << &ptr << endl; cout << &(++ptr); //cout << &(ptr++); /* 不合法,為什麼?! ERROR: &需一個 l-value */ 輸出結果: 0x23ff2c 0x23ff2c 不曉得結果為何會是這樣,使用 &ptr 應該是取到指標變數所在的位址 我知道如果使用 *(++ptr) 會得到 num[2]=2 這個結果。 那 &(++ptr) 又是什麼東西 @@? 迷糊了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.144.198 ※ 編輯: homal 來自: 124.8.144.198 (01/17 20:00)
akasan:ptr++的語意是 回傳一個暫時變數=ptr 然然後ptr 往前走 01/17 20:01
akasan:所以那句代表你想要去取一個暫時變數的 address ... 01/17 20:01
dendrobium:相信你應該不知道什麼是lvalue, 弄懂你就知道原因了 01/17 20:03
homal:l-vale 是一個 address, r-value 是一個值 01/17 20:03
homal:哦 akasan 兄的解說,我懂了,你說到關鍵字 "暫時變數" 01/17 20:04
homal:如果是暫時變數,跟本就沒辦法去取 "address" 01/17 20:05
dendrobium:你對L/R value的認知有誤 01/17 20:15
homal:真假@@" 能否指教 l/r value 的意思 01/17 20:18
legnaleurc:請看 8040 篇 yoco 大寫得很詳細 01/17 20:30
stupid0319:QQ寫那麼久的C從沒想過原PO的問題= = 01/18 02:39
stupid0319:我也想不通&(++ptr),到底什麼時候要使用的呢?? 01/18 02:41
homal:其實我是在惡搞...所以好像沒人用 &(++ptr) 這種東西 01/18 14:15
superbear:++ptr是加ptr的value, ptr的address不會變啊 01/20 03:08
superbear:int i=0; &(++i) 跟 &i 出來會一樣,你如果這個能懂 01/20 03:10
superbear:那int* 也是一樣道理 01/20 03:10