(C語言)結構體成員的引用->(箭頭)和 .(點)


關於結構體成員的引用有這樣的規律:

箭頭(->):左邊必須為指針;
點號(.):左邊必須為實體。

那么如果一個結構體指針引用一個成員,這個成員又是一個結構體(並且是一個實體),那么如果要引用這個成員的成員要怎么辦呢?

經過實驗發現,依然遵循上面的規則即:箭頭左邊必須是指針,實體一定要用點號引用。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;
}

則編譯通過得到運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM