關於結構體成員的引用有這樣的規律:
箭頭(->):左邊必須為指針;
點號(.):左邊必須為實體。
那麼如果一個結構體指針引用一個成員,這個成員又是一個結構體(並且是一個實體),那麼如果要引用這個成員的成員要怎麼辦呢?
經過實驗發現,依然遵循上面的規則即:箭頭左邊必須是指針,實體一定要用點號引用。for example C->student.age
eg.
一開始都用箭頭即c->s1->age
#include "stdio.h"
int main()
{
struct student{
int age;
int class_;
};
struct class2{
struct student s1;
};
struct class2 *c;
struct class2 cc={
.s1={
.age=9,
.class_=2
}
};
c=&cc;
printf("%d",c->s1->age);
return 0;
}
出現錯誤如下:

如果把代碼改為c->s1.age,代碼如下:
#include "stdio.h"
int main()
{
struct student{
int age;
int class_;
};
struct class2{
struct student s1;
};
struct class2 *c;
struct class2 cc={
.s1={
.age=9,
.class_=2
}
};
c=&cc;
printf("%d",c->s1.age);
return 0;
}
則編譯通過得到運行結果:
