1

2D 配列があり、プログレッシブなすべての列をマージする必要があります。すでに配列を分割していますが、ソートされたシーケンスswap[]に入れようとすると「違反呼び出し」が発生しswap[]ました。私はポインターを使用していますが、そこに問題があると思います。誰でも助けることができますか?

void MergeSequence(float seq[], float newSeq[], int *seqIndex, int newSeqIndex)
{
    int j = *seqIndex;

    for(int i=0; i<newSeqIndex; i++)
    {
        seq[*seqIndex] = newSeq[i];
        *seqIndex++;
    }
}    

seq[]は表示されるnewSeq[]行、 は追加しようとしている行ですseq[]。ポインターは大きな現在の位置でなければならずseq[]、最後のパラメーターは追加する行の長さです。これがあまり混乱しないことを願っています:D

4

1 に答える 1

4

*seqIndex++;おそらくあなたが思うようにはなりません。(*seqIndex)++;が指す値をインクリメントする代わりにすべきseqIndexです。現在のコードは、ポインター自体をインクリメントし、逆参照操作を実行して、その結果を破棄します。

が少なくともエントリを含む配列を指していること、および がseq少なくともエントリを含む配列を指していることも確認する必要があります。*seqIndex + newSeqIndexnewSeqnewSeqIndex

于 2013-05-26T17:04:28.627 に答える