[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だったとかかんとか)
カテゴリ:
C