-1

C でのステートメントについて、 、、?int ** p = NULL;のメモリ割り当てについて議論してください。スタック上にあるか、null の場所にあるか、または他の場所にあるか???p*p**p

4

2 に答える 2

1
  • pどこかを指す単なる変数です。
  • その型はint**、へのポインターを指すことができることを意味しますint
  • メモリを割り当てるコードを記述していないため、メモリの割り当ては行われません。
  • ..もちろん、それ自体のメモリ割り当てを除きますp。32ビットのアドレス空間を想定すると、4バイトのメモリがスタックに割り当てられ、そのメモリアドレスの値は0(NULL)です。
于 2012-08-24T23:16:02.037 に答える
1

pint **スタック上のポインターになり、値が含まれますNULL

を評価しようと*pすると、逆参照を試みるため、実行時エラーが発生しますNULL。ただし、実行時エラーが発生しない場合は、メモリ位置の値になります0

評価しよう**pとしても、評価することが不可能であるため、到達すること*pは不可能です (実行時エラーが発生します)。ただし*p、実行時エラーが発生しなかった場合は**p、 value at memory location が指すメモリ ロケーションの値になります0

編集:個別の変数として存在しないため、どこにも割り当てられません*p**pメモリには変数 が 1 つだけありp、それがスタックに格納されます。もしそうならint i = 10;、どこにi * 5保存されていますか?

于 2012-08-24T23:03:20.930 に答える