2

だから、私はECGデバイスのデータを処理するより大きなプログラムのためにCでいくつかのコードを書いています。プログラムには、以前の生データとフィルター処理されたデータの両方を使用しながら、データを継続的にフィルター処理する必要があるため、データを格納するためのグローバルな int 配列がいくつかあります。したがって、フィルター処理に使用されなくなったデータを破棄して新しい生データなどに置き換えるために、時々配列内の 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 つは値の 1 つが変更されています。これがなぜなのかはよくわかりませんが、フィードバックが問題をよりよく理解するのに役立つことを本当に願っています.

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 に答える