変数がある場合は、その変数に関連付けられたメモリアドレスがあり、ポインタ変数の場合、そのメモリアドレスの「値」は、ポインタが指す実際のデータを保持するメモリアドレスへの参照です。 。
だから私が持っている場合:
for (int x = 0; x < 2; x++)
{
char * a = (char*)malloc(20);
printf("%p\r\n", &a);
printf("%p\r\n", a);
}
出力は次のようになります。
00999999
04427310
00999999
0442ECF0
ご覧のとおり、ループの各パスで宣言されたポインター変数の1番目と3番目のメモリアドレスは同じままです。これは、前の変数がスコープ外になり、次に使用可能なアドレスが同じアドレス。
この一般化をループ内で宣言されたすべての変数に拡張できますか、それとも例外がありますか?