|
>for文を抜けたとき、pはmeibo[5]となるん・・ですか?
そうです。ところが、
> struct syain meibo[5];
と、実体は、meibo[0]〜meibo[4]までの5つ分しか確保していないため、
pは、確保されていない、範囲外を指し示していることになります。
> pに&をつけるとpにはmeibo[0]のアドレスが代入されてるので、
> &&meibo[0]になるんじゃないですか?
見るところが浅すぎます。
struct syain{
char name[15];
int age;
int nensyu;
};
struct syain meibo[5];
struct syain *p;
p=&meibo[0];
としたとき、
syain[0].age も、p->age も、int型です。そこで、
scanf("%d", xxx);
では、xxx は、(int *)型を要求します。通常は
scanf("%d", &(syain[0].age));
と書くことでしょう。
ところが、
syain[0].age と p->age は同一の型なので、
scanf("%d", &(p->age));
と書くことになります。
ここで、&演算子はpを修飾しているのではなく、ageを修飾している点
に着目してください。
&演算子に関しては、色々とあるので、ここには書ききれません。
「配列とポインタの完全制覇」
で勉強してください。
|