4
這些表達式的結果是否相同?指針算術 - 相同的表達式?
&(*ptr) += 4 // Expression 1
ptr += 4 // Expression 2
我主要是一個Java開發人員,並且已經被分派重新編譯從VS2008到VS2015的舊項目。上面的第一行導致編譯錯誤,因爲左操作數不是可修改的l值。問題是如果我可以使用第二個表達式而不是第一個表達式,因爲根據我的理解,它們應該是相同的?
該ptr類型爲char*
。
非常感謝任何有關此問題的見解和/或幫助。
那麼,你是說在VS2008下的第一個_did_編譯?如果是這樣,編譯器正在做一些非標準的事情,並不清楚它是否實際上改變了'ptr'的值,或者改變了臨時指針的值並拋出了這個結果。我建議謹慎。 –
它的確做到了。我發現它也很麻煩,現在知道編譯器無法訪問第一個表達式。害怕我會糾正一直在「破碎」的東西。 – Sarynn
第一個是荒謬的,老實說,我不知道重點會是什麼,我認爲我們需要更多的背景。它們不會完全相同,因爲編譯器說第一次嘗試修改一個臨時地址,如果它編譯它可能對'ptr'沒有任何影響,但是您可以始終使用舊編譯器並親自查看。 – George