「ポインタ完全制覇」1-3 ポインタについて
1-3-1 そもそも、悪名高いポインタとは何か
- 「ポインタは、他の変数のアドレスを内容とする変数」(by K&R)
- ポインタといえば変数であるかのように説明されているが、実際には必ずしもそうではない(そうではないとはどういうことなんだろう)
- ポインタ型
- ポインタ型という型が単独で存在するわけではなく、他の型から派生することにより作り出される(他の型、int型とか、は単独で存在可能)
- 被参照型Tから派生されるポインタ型はTへのポインタと呼ぶ
- intへのポインタ型、doubleへのポインタ型とか
- ポインタ型は型なので、ポインタ型の変数もポインタ型の値もある
- ポインタ型という型が単独で存在するわけではなく、他の型から派生することにより作り出される(他の型、int型とか、は単独で存在可能)
intという型は整数を表す intは型なので、int型を格納するための変数もある int型の値もある ポインタ型も同じく、 ポインタ型はメモリアドレスを表す ポインタは型なので、ポインタを格納するための変数もある ポインタ型の値もある
1-3-2 ポインタに触れてみよう
#include <stdio.h> int main(void) { int hoge = 5; int piyo = 10; int *hoge_p; printf("&hoge..%p\n", (void*)&hoge); printf("&piyo..%p\n", (void*)&piyo); printf("&hoge_p..%p\n", (void*)&hoge_p); return 0; }