-- 構造体のポインター --
前回は配列をポインターとして受け取り、インクリメントした場合その型のサイズだけアドレスが増減するという内容でした。
では、構造体をポインターで渡した場合の動作を見てみます。
構造体にはメンバーが存在します。
strunct structval { int member1; int member2; } sval;変数svalのmember1にアクセスしようとすると sval.member1 という書き方でアクセスできます。
この変数を関数に渡す場合 func1( &sval ) で渡すことが出来ます。
受取側関数 func1 のプロとライプ宣言は、
int func1(strunct structval *p);
という宣言で受取、member1にアクセスる場合 p->member1 という書き方でアクセスできます。
ここで出てくる -> をアロー演算子といいます。
構造体変数名でメンバーにアクセスする場合 .を使い、ポインターの場合は、-> でメンバーにアクセスします。
#include <stdio.h> struct structval { int member1; int member2; }; int func1(struct structval *p) { printf("member1=%d\n",p->member1); return 0; } int main( ) { int i; struct structval sval; for(i=0; i<10; i++) { sval.member1 = i; func1(&sval); } }