用C中的指针合并两个序列 - “违规调用”

时间:2013-05-26 17:02:17

标签: c arrays function pointers access-violation

我有一个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

1 个答案:

答案 0 :(得分:4)

*seqIndex++;可能不符合您的想法。它应该是(*seqIndex)++;来增加seqIndex指向的值。您当前的代码会递增指针本身,并执行取消引用操作并丢弃其结果。

您还需要确保seq指向一个至少包含*seqIndex + newSeqIndex条目的数组,newSeq指向一个至少包含newSeqIndex条目的数组。