我想用下一个代码解决的问题是将某个大小的整数数组旋转到一定的数字移位.例如,为
int a[5] = {1,2,3,4,5}
Run Code Online (Sandbox Code Playgroud)
在哪里size =5,shift = 2结果必须是
{3,4,5,1,2}
Run Code Online (Sandbox Code Playgroud)
这是我的功能
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;
}
}
Run Code Online (Sandbox Code Playgroud)
输出正确,但存在运行时异常
Stack around the variable 'a' was corrupted
Run Code Online (Sandbox Code Playgroud)
问题肯定在于
a[size - 1] = l;
Run Code Online (Sandbox Code Playgroud)
但我无法理解,到底出了什么问题.
在此先感谢您的帮助.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |