[C言語]構造体をtypedefして新しい型を定義する

実行結果
p  = {1, 2}
lp = {3, 4}


構造体にポインタを割り当てると、PerlやPHPのオブジェクトと似た感じになりますね。
アロー演算子(->)でメンバにアクセスするところが同じです。

はまりどころ

typedefでポインタを型定義してしまった場合、変数宣言でポインタかポインタでないかが分からなくなります。

例えばint型の場合、
int i;
int *pi;
のようにポインタ変数の宣言で*がつくので見分けやすいです。
一方、構造体を指すポインタをtypedefした場合は、
POINT p;
LPPOINT lp;
のようにひじょ~~に見分けづらくなります。
接頭辞LPをつけるなどの工夫がいりそうです。
余談
ポインタにlpという接頭辞をつけるのは、C言語界隈での昔からの慣習のようです。
(もとの由来はlong pointerだったとかかんとか)
カテゴリ: