関数内のポインタの配列にメモリを割り当てる方法を調べるのに問題があります。この同じ関数では、別の配列の値で配列を初期化しようとしています。私はいろいろなことをしばらく試してきたので、私がどこにいるのか分からないのか分かりません。ポインターの配列の関数にメモリを割り当てて値を割り当てる方法は?
#include <stdio.h>
#include <stdlib.h>
void allocate();
void print();
int main() {
int array_length = 10;
int array[array_length] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int **ascending;
int **descending;
allocate(&ascending, &descending, array, array_length);
print(&ascending, &descending, array, array_length);
}
void allocate(int ***ascending, int ***descending, int array[], int array_length) {
*ascending = (int **)malloc(array_length * sizeof(int *));
*descending = (int **)malloc(array_length * sizeof(int *));
int i, first_index = 0;
for (i = 0; i < array_length; i++) {
(*ascending)[i] = &(array[i]);
(*descending)[i] = &(array[i]);
}
}
void print(int **ascending, int **descending, int array[], int array_length) {
int i;
printf("\nAscending\tOriginal\tDescending\n\n");
for (i = 0; i < array_length; i++) {
printf("%d\t\t", ascending[i]);
printf("%d\t\t", array[i]);
printf("%d\t\t", descending[i]);
printf("\n");
}
printf("\n");
}
のように見えるかもしれ[C ' 'に'のmalloc() 'と家族の戻り値をキャストさせない理由でこの議論を参照してください。](HTTP ://stackoverflow.com/q/605845/2173917)。 –
'無効割り当てる(int型*** ascending' ...と'無効印刷(int型** ascending' ... ISN;?あなたが応答を持ってたらその何かトン –
___Please質問/コードを変更しないでください。これは、答えはあなたに感謝。これは、働いていた間違った.___ –