我正在開發Cocoa/Xcode,並且有一個int *
包含值的數組。 當我想使用memcpy
來移動數組中的值時,它只傳輸0。memcpy問題
例如
- 數組包含值1 2 3 4
memcpy(array,array+2*sizeof(int),2*sizeof(int));
結果:0,0,3,4
有沒有更好的替代memcpy的,或者說我做錯了?
我正在開發Cocoa/Xcode,並且有一個int *
包含值的數組。 當我想使用memcpy
來移動數組中的值時,它只傳輸0。memcpy問題
例如
memcpy(array,array+2*sizeof(int),2*sizeof(int));
結果:0,0,3,4
有沒有更好的替代memcpy的,或者說我做錯了?
我覺得做你想要什麼是正確的做法是:
memcpy(array, array + 2, 2*sizeof(int));
這是因爲在memcpy的指針運算的第二個參數正在做,而這被添加到「數組」的指針被認爲是什麼是整數大小的倍數。所以在這種情況下,「數組+2」意味着「整數指針數組加上兩倍於整數的大小」。
memcpy的聯機幫助頁說,區域不應該重疊。試試memmove。
謝謝,但區域在這裏不重疊,因爲我只是將3和4複製到1和2.試圖與memmove然而結果是不幸的是相同的... –
爲什麼在世界上你會使用'memcpy 'for 2'int's而不是隻寫'array [0] = array [2];陣列[1] =陣列[3];'?? –
我個人更喜歡「memcpy(array,array + 2,2 * sizeof array [0]);」。將獨立於陣列的類型,即使在宏中。 – wildplasser
你是我的英雄,謝謝:-) –