0

だから私はCの配列でヒープソートを呼んでいます.

私のヒープソート関数は次のようになります。

void heapSort(int keys[], int numKeys){
...
int tmp[numKeys];
for(int i=0; i<numKeys; i++){
    tmp[i] = maxVaue(h);
    deleteMax(h);
}

*keys = tmp;
}

私がやろうとしているkeysのは、関数の戻り値の型が void であるため、新しい配列を指すように変更することです。ポインターでこれを行う方法はありますか、それともmemcpy配列だけが必要ですか?

4

3 に答える 3

3

tmp配列は直接代入できません。また、関数が戻ると範囲外になるため、関数の外で使用することもできません。を使用する必要がありますmemcpy()

于 2013-04-30T04:37:10.600 に答える
2

keys何を指すかを変更したい場合は、 として宣言する必要がありますint **mallocまた、C99 可変長配列ではなく、明示的な動的割り当て (の使用) を使用します。

于 2013-04-30T05:32:13.867 に答える