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

问题描述 投票:1回答: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

c arrays function pointers access-violation
1个回答
4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.