私はint型の配列がある場合:上記のように、それまでのmallocなぜmallocの片方向は失敗しますが、もう一方は失敗しますか?
int *array;
array = malloc(5 * sizeof(int));
と私を、私はそれにアクセスし、それに値を設定することができます。すべて順調。
しかし私はint型のポインタを作成して機能し、malloc関数内部関数を渡す場合、私はポインタとして配列に渡しない限り、私は配列に/設定値にアクセスすることはできませんポインタに?私は配列をパラメータとして(INT **配列)を受け入れるすると間接参照、ポインタ(ポインタのようポインタ)のアドレスを渡し、そしてmalloc関数でそれを割り当てることができ、それを修正する
some_void_function(int *array) {
array = malloc(5 * sizeof(int))
}
int *array;
some_void_function(array);
*(array + 3) = 5; // DOES NOT WORK
:
some_void_function(int **array) {
*array = malloc(5 * sizeof(int))
}
int *array;
some_void_function(&array);
*(array + 3) = 5; // WORKS
誰かがこれを私に説明できますか?私は両方の状況で同じことをやっていませんか?アドレスを渡してから逆参照するだけで、最初の場所で単一のポインタを渡すのと同じことですか?
どうすれば同じことができますか? 'some_void_function(array);を呼び出すことによって、' array'を変更していません。値によって渡されます。 –