配列の内容をシフトするには、できるだけ効率的な手段が必要です。配列の各位置の内容を 1 つ右にシフトし、最初の位置を無視して、そこに新しい値を書き込めるようにする必要があります。
ここに私が持っているものがあります:
#define LENGTH 5
int myArray[LENGTH] = {1, 2, 3, 4, 5};
int *pa = myArray + (LENGTH - 1);
for (ushort i = 5; i > 0; i--) {
*pa = *(pa - 1);
pa--;
}
私がやりたいのは、for
ループの 2 行を 1 つの操作に結合することです。何かのようなもの:
*pa = *(pa--);
ただし、この結果は未定義です。すでに使用しているものにこだわっていますか?
編集:これは私が使用している実際のコードではないことを明確にする必要がありました。私が求めていた構造を示す簡単な例です。