Cでのポインターの使用に関して、私は驚くべき疑問を抱いています。そのため、これについて多くのことを検索しましたが、満足のいく答えは提示されませんでした。これが事です:
INT 型のポインターと INT 型の変数 (int x、*pointer など) を宣言します。したがって、両方がそれぞれ 0x102 と 0x106 のように、RAM 内の連続したアドレスを占有しているとします。これまでのところ驚くことはありません。次に、x = 5 を宣言します。私のメモリ マップは次のようになるはずです。
int x, *pointer;
x = 5;
Ok。大学では、この方法でポインターを割り当てることを学びました。
pointer = &x;
そして、私のメモリマップは次のようになります。
ここまでは順調ですね。しかし、問題は、上記の代わりに、次のようなポインターを割り当てる場合です。
*pointer = x;
「x」のメモリアドレスは、ポインタのメモリアドレスに格納されるべきではありませんか? 「メモリマップ 2」のようなものをずっと考えていたのですが、結果は「メモリマップ 1」と同じで、0x106 アドレスにガベージ番号が格納されています。では、「x」のメモリアドレスがポインタのメモリアドレスに格納されていない場合、プログラムはどのように私が指し示したい場所を知っているのでしょうか? この情報はどこに保存されますか?
単純な質問のように見えますが、私には理解できません。:(
前もって感謝します!:)