数组函数会导致另一个数组的值发生更改

时间:2012-10-06 19:22:40

标签: c arrays function int overwrite

所以,我正在用C编写一些代码,用于ECG设备的更大程序处理数据。该程序有几个全局int数组来存储数据,因为它必须连续过滤数据,同时还使用以前的原始数据和过滤数据。因此,我必须偶尔在我的数组中移动整数,以便丢弃不再用于过滤的数据并用新的原始数据替换它等等。实现这个并不比在我的代码中实现一些for循环更困难,为我做这个。但是我想为我定义一个函数,因为我这样做了很多次。因此我编写了这样一个函数,看起来像这样:

void updateArray(int array[], int size){
size = size / sizeof(int);
int i;
for(i = size; i > 0; i--){
    array[i] = array[i-1];
}}

但是,由于我不习惯用C编码,我在这里显然做错了,因为使用这个函数会产生错误的数据。调试该函数,我发现当调用此函数时,数组按预期移动,但我的其他数组之一的其中一个值已更改。我不确定为什么会这样,但我真的希望一些反馈可以帮助我更好地理解这个问题。

1 个答案:

答案 0 :(得分:3)

array[size]超出了数组的末尾。您正在复制太多的值。

应该是:

void updateArray(int array[], int size) {
    size = size / sizeof(int);
    int i;
    for(i = size - 1; i > 0; i--) {
        array[i] = array[i-1];
    }
}