0
ヒープ内の配列をソートする関数を記述する必要があります。この関数は、配列のコピーを作成し、コピーをソートし、ソートされたコピーへのポインタを返す必要があります。私はqsort()
しようとしましたが、私は奇妙な出力を取得します。私はそれがポインタと何かを持っていると確信していますが、まだそれを把握することはできません。ヒープ内の配列のソート
これは、これまでの私のコードです:
int cmpfunc(const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
int sorted_copy(int* list[], size_t s)
{
int aList[s];
memcpy(aList,list,s);
printf("Array was copied successfuly to aList[] array\n\n");
printf("Before sorting the list is: \n");
for(int i = 0; i < s; i++)
printf("%d\n", aList[i]);
qsort(aList, s, sizeof(int), cmpfunc);
printf("After sorting the list is: \n");
for(int i = 0; i < s; i++)
{
printf("%d\n", aList[i]);
}
return *aList;
}
int main()
{
int list[10] = {4, 1, 2, 7, 3, 5, 6, 0, 8, 9};
sorted_copy(list,sizeof(list));
return 0;
}
アンこの私が
Array was copied successfuly to aList[] array
Before sorting the list is:
4
1
2
7
3
5
6
0
8
9
0
0
0
0
3
0
0
0
268501009
32762
4199840
0
-1407817721
32762
12846904
0
1324151619
0
8
0
176
0
6487584
0
4199972
0
4200528
0
-1434081178
32762
After sorting the list is:
-1434081178
-1407817721
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
3
4
5
6
7
8
8
9
176
32762
32762
32762
4199840
4199972
4200528
6487584
12846904
268501009
1324151619
Process returned 0 (0x0) execution time : 0.281 s
Press any key to continue.
'int'の配列に' int'へのポインタの配列をダンプすることは、何をしようとしているのか良いスタートではありません。とにかく、あなたは実際には容量にコピーしていません。 'memcpy'の3番目の引数は* bytes *のサイズです。要素数ではありません。最後に、「ソートされたコピーを返す」には、追加のin/outパラメータ、静的配列、またはいくつかの動的割り当てのどちらかが含まれます。 – WhozCraig
[this](https://ideone.com/m9zdtF)のように修正されました – BLUEPIXY
funcion closureの後に削除されるローカル変数のアドレスを返しています – bobra