ここでは、C言語のポインタについて規格レベルで解説する。
「結論→詳細→具体例」の順で説明しているので、知識を思い出したいだけの人は結論を読めば十分だ。
“
Keep the Spirit of C
· Trust the programmer.
プログラマを信頼せよ。
· Don’t prevent the programmer from doing what needs to be done.
プログラマがすべきことを妨げるな。
· Keep the language small and simple.
言語を小さくシンプルに保て。
· Provide only one way to do an operation.
操作には一つの方法だけを提供せよ。
· Make it fast, even if it is not guaranteed to be portable.
移植性が保証されなくとも、速くせよ。
Rationale for International Standard — Programming Languages — C
ISO/IEC JTC1/SC22/WG14 /
open-std.org
結論:C言語のポインタの正体
C言語のポインタとは、変数のアドレス(メモリ上の住所)を格納する変数だ。
変数はメモリ上のどこかに存在する。ポインタはその「どこか」を記憶している。
イメージとしては、こうだ。
変数 x
42
アドレス: 0x100
ポインタ p
0x100
x のアドレスを保持
*p で参照
42
x の値を取得
コードで書くとこうなる。
int x = 42; // 変数 x
int *p = &x; // p は x のアドレスを保持
printf("%d", *p); // 42 が出力されるポインタの本質は「値そのもの」ではなく「値がある場所」を扱うことだ。これがC言語の強さであり、難しさでもある。


コメント