前の章で学んだように、構造体は型の一種なので、構造体へのポインタを考える 時には、その構造体型へのポインタになる。
例 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() ではアドレスを受け取れるように引数にはポインタを用いている。
このように、変数のアドレスを渡すときには、渡される側でポインタとして受け取る
ようにする訳である。従って、ポインタ ppen は main() 関数で確保
された構造体変数 pen を指している点に注意しよう。