next up previous contents
Next: 20.2 メンバーとポインタ Up: 20. 構造体 II Previous: 20. 構造体 II

20.1 構造体へのポインタ

前の章で学んだように、構造体は型の一種なので、構造体へのポインタを考える 時には、その構造体型へのポインタになる。

例 1
       struct Pen {
             char color[20];
             int  hutosa;
       } pen;
       struct Pen *ppen;

上の例では、構造体 Pen 型を考え、構造体 Pen 型へのポインタ ppen を宣言して いる。従って、ポインタ ppen は構造体 Pen 型の変数のアドレスを保持する事が 出来るので、

例 2
       ppen = &pen;

のように使う事が出来る。

実際には、関数同士で構造体のデータをやり取りするときに最も良く使われ、関数の 呼び出し元で構造体のアドレスを渡す事になる。

例 3
       struct Pen {
             char color;
             int  hutosa;
       };
       void init( struct Pen *);
       main(){
             struct Pen pen;
             init(&pen);
       }
       init( struct Pen *ppen){
       ...

上の例では、main() 関数で関数 init() を呼ぶ際に、構造体変数 pen のアドレスを init() に渡しており、呼び出される関数 init() ではアドレスを受け取れるように引数にはポインタを用いている。 このように、変数のアドレスを渡すときには、渡される側でポインタとして受け取る ようにする訳である。従って、ポインタ ppenmain() 関数で確保 された構造体変数 pen を指している点に注意しよう。

\begin{figure}\begin{center}
\epsfile{file=20fig1}
\end{center}\end{figure}



Noriyo Kanayama