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

1. 構造体へのポインタ

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


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

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


例 2
       ppen = &pen;

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

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


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

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

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



Noriyo Kanayama