2011-09-25 53 views
0

我正在開發Cocoa/Xcode,並且有一個int *包含值的數組。 當我想使用memcpy來移動數組中的值時,它只傳輸0。memcpy問題

例如

  • 數組包含值1 2 3 4
  • memcpy(array,array+2*sizeof(int),2*sizeof(int));

結果:0,0,3,4

有沒有更好的替代memcpy的,或者說我做錯了?

回答

7

我覺得做你想要什麼是正確的做法是:

memcpy(array, array + 2, 2*sizeof(int)); 

這是因爲在memcpy的指針運算的第二個參數正在做,而這被添加到「數組」的指針被認爲是什麼是整數大小的倍數。所以在這種情況下,「數組+2」意味着「整數指針數組加上兩倍於整數的大小」。

+2

我個人更喜歡「memcpy(array,array + 2,2 * sizeof array [0]);」。將獨立於陣列的類型,即使在宏中。 – wildplasser

+0

你是我的英雄,謝謝:-) –

0

memcpy的聯機幫助頁說,區域不應該重疊。試試memmove。

+0

謝謝,但區域在這裏不重疊,因爲我只是將3和4複製到1和2.試圖與memmove然而結果是不幸的是相同的... –

+0

爲什麼在世界上你會使用'memcpy 'for 2'int's而不是隻寫'array [0] = array [2];陣列[1] =陣列[3];'?? –