next up previous contents
Next: 3. ポインタのメンバー Up: 19. 構造体 II Previous: 1. 構造体へのポインタ

2. メンバーとポインタ

例 2 のように構造体へのポインタが与えられた時には、どのようにしてメンバーを 指定すれば良いのであろうか。勿論、以下のようにするのは誤りである。


間違った例
       ppen.hutosa = 4;

ppen はポインタであって、構造体そのものではないので、上のようにそのまま 選択演算子を用いる事は出来ない。選択演算子はあくまでも構造体変数に作用するもの であるからだ。正しくは次のようにする。


正しい例
       (*ppen).hutosa = 4;

ここで *ppen 全体を括弧で囲むことを忘れてはいけない。何故ならば、 選択演算子 . と参照演算子 * では選択演算子の方が強いからであり、 そのために括弧がないと、*(ppen.hutosa) と解釈されてしまうからである。 従って、確かに上の例のようにすれば正しいのだが、面倒であるし、間違う可能性も 高くなるので、構造体ポインタの指す構造体のメンバーへのアクセスには特別に 演算子 -> が用意されている。


       (*ppen).hutosa  は、  ppen->hutosa   と同じ。

従って、例 3 の関数 init() は、例えば次のように書ける。


例 4
       init( struct Pen *ppen){
             ppen->color = 'b';
             ppen->futosa = 5;
       }



Noriyo Kanayama