C 言語の能力を最大限に引き出すには、これらが重要な役割を果たす。 void *ボイドポインタ (type)タイプキャスト #defineマクロ である。実は、マクロ自体は C 言語の規格ではなく、プリプロセスのものである。しかし、既に C 言語のコンパイル手順はプリプロセスと一体化し、マクロのない C 言語など考えられないので一つとして数える。 C 言語が扱う型は大きく分けると値とメモリ番地だけなのである。値は更に分かれ、int や double などとなるのである。そして、メモリ番地はそれらの値が存在するメモリの位置となる。struct は値の集合体であり、すなわち値である。 さて、お気づきであろうか。void * は全てのメモリ番地を指すことができ、(cast) は如何なる値も cast 型として読むことを指定する。すなわち、この二つが C 言語の根底を示しているのである。 void