關於結構體成員的引用有這樣的規律:
箭頭(->):左邊必須為指針;
點號(.):左邊必須為實體。
那麼如果一個結構體指針引用一個成員,這個成員又是一個結構體(並且是一個實體),那麼如果要引用這個成員的成員要怎麼辦呢?
經過實驗發現,依然遵循上面的規則即:箭頭左邊必須是指針,實體一定要用點號引用。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; }
則編譯通過得到運行結果: