次のコードで解決したい問題は、あるサイズの整数配列を特定の数値シフトに回転させることです。例えば 、C++ポインタ:配列のスタックが壊れていた
int a[5] = {1,2,3,4,5}
のためにどこsize =5
、shift = 2
のために結果がでなければなりません
{3,4,5,1,2}
は、これは私の関数である
void rotate(int a[], int size, int shift)
{
for (int i = 0; i < shift%size; ++i) {
int *buffer = &a[0];
a = &a[1];
int l = *buffer;
a[size - 1] = l;
}
}
出力は正しいですが、実行時例外があります
Stack around the variable 'a' was corrupted
問題が
a[size - 1] = l;
に間違いですが、私は正確に何が間違っている、理解することはできません。
ご協力いただきありがとうございます。
これは既に存在します: 'std :: rotate' – chris