為什麼釋放記憶體二維陣列採用的不是i 而是 i

2022-12-18 10:36:00 字數 1028 閱讀 6613

1樓:匿名使用者

不行,因為 i++是先取i ,再把i增大1 ,按照本來的, delete black[0] black[1]... black[w-1]

按照++i ,每次先將i增大1,再用它。delete black[1], black[2]... black[w]

刪掉了不該刪的 black[w],沒刪掉該刪的 black[0]所以反過來不行的。別聽樓上瞎說,++i,和i++,到底該用哪個,得具體分析,別急著它那點錯誤經驗。

採納我吧,謝謝樓主

2樓:ok洛陽水席

i++是使用i之後再加一.++其實也是乙個函式,它原理是先用i的拷貝儲存i的值,再將i+1;最後將i的拷貝返回。

所以用i++比++i浪費資源!能用++i就用++i;別用i++!

不懂追問!

3樓:我要賺第一桶金

是可以的,執行**的順序是先執行int i=0;

然後進行判斷i

再執行迴圈體delete部分

最後執行++i,依次迴圈

這裡改成i++也沒錯,但是++i在執行效率上要比i++高只有在大的專案上才有明顯的體現。

4樓:空雪夢見

你的「反過來寫」是指什麼?

如果是for(int i = 0; i < w; i++)delete black[i];

那麼可以,效果一樣

如果是for(int i = 0; i < w; i)delete black[i++];

那麼可以,結果一樣

如果是for(int i = 0; i < w; ++i)delete black[i++];

那麼不行,原因是兩個++重複了

5樓:匿名使用者

對於拋棄返回值的整形自增運算,幾乎所有編譯器都會把i++和++i編譯成一樣的指令。所以在這裡是完全沒有區別的。

但是建議養成類似情形寫++i的習慣,因為不保證編譯器能將其他型別的變數運算也作優化,尤其是自己寫的型別。

c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和

要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42...

關於二維陣列下標越界的問題,c語言問題,二維陣列的下標越界怎麼看?

二維陣列a只有兩行,a 2 已經越界。請先給抄出明確答覆 陣列下標越bai界 解釋原因 du 首先陣列arrs 裡面包含兩個陣列,zhi長度是dao2,那麼最大的下標就是1 你的輸出語句 arrs 2 3 如果你想要輸出第二個陣列的地三個數應該是arrs 1 2 c語言問題,二維陣列的下標越界怎麼看...

資料結構C語言已知二維陣列A採用行序為

陣列a n m a 0 0 是陣列中地抄址最小的元襲素。如果a 0 0 存放位址為n,那麼a i j 存放的位址就是 n i m sizeof t j sizeof t sizeof t 是每個元素所佔的儲存單元。故可以知道a 18 9 的儲存位址是 1000 18 10 10 2 9 5 2 11...