小编riv*_*are的帖子

C++指针:数组的堆栈已损坏

我想用下一个代码解决的问题是将某个大小的整数数组旋转到一定的数字移位.例如,为

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)

但我无法理解,到底出了什么问题.
在此先感谢您的帮助.

c++ pointers

2
推荐指数
1
解决办法
74
查看次数

标签 统计

c++ ×1

pointers ×1