2

所以,我正在用 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 编写代码,我显然在这里做错了,因为使用这个函数会产生错误的数据。调试该函数,我发现当调用此函数时,数组按预期移动,但我的其他数组之一的其中一个值发生了变化。我不太确定为什么会这样,但我真的希望一些反馈可以帮助我更好地理解这个问题。

4

1 回答 1

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];
    }
}
于 2012-10-06T19:29:11.427 回答