1
が、これは私のコードです:初期値(C言語)
void init_array(int** array) {
*array = (int*) malloc(3 * sizeof(int));
/* ???? **(array+2) = 666; */
return;
}
void init(int* array, int* length) {
*length = 3;
*(array+0) = 0;
*(array+1) = 1;
*(array+2) = 2;
return;
}
int main(void) {
/* Variables */
int array_length;
int* array;
/* Initialize */
init_array(&array);
init(array, &array_length);
free(array);
return 0;
}
私の質問は:どのように私は、関数INIT_ARRAY(の配列の値を初期化することができます)。私は**(array+2)
が働く必要があることをもたらすために来た私は鉛筆と紙を使用
**(array+2) = 666;
*(*(array+2)) = 666;
*array[2] = 666;
**array[2] = 666;
:
私は、次のような事をしようとしていますそれは私にセグメンテーションfを与えるault。
Cのポインタが実際にどのように動作するのか混乱しているので、私はあなたの答えに感謝します。
array
あなたがポインタを取得することを間接参照にしたい:
*array
はその後の結果に配列の添字演算子を適用し
'(* array)[2] = 666;'を試し、すべての警告を表示してコンパイルしてください。 –
私はC++に精通していますが、 'new'演算子やオブジェクトを宣言して指定されたアドレスに値を作成する必要があることを知っています。 – pandoragami
Cで新しいことはありません。 –