我在mergesort中传递此数组的方式有什么问题?

时间:2014-12-11 09:26:08

标签: c++ arrays parameters mergesort

我在尝试对我传递的数组做任何事情时都会遇到段错误。我可能会做一些简单的愚蠢错误,但我没有看到它。

合并通话:

merge(&(array[size]), 0, size-1);

合并

void merge(people* pe,int low,int high)
{   //cout<< pe[0].fname << endl;  
    if(low < high)
    {   int mid = (low+high)/2;
        merge(pe, low, mid);
        merge(pe, mid+1, high);
        mymerge(pe, low, mid, high);
    }
}

我进入那个cout,看看我是否可以访问那里的阵列,我立即得到一个段错误。我在那里做错了什么? (我可以cout array [0] .fname,这样结构数组就没有问题了)

1 个答案:

答案 0 :(得分:5)

如果你以明显的方式命名变量,那么(除了祝贺你这样做)&(array[size])可能会返回超出array范围的指针1。

取消引用该指针将为您提供未定义的行为,因为您没有该内存,。

我认为您的意思是传递&(array[0]),或只传递array