程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> (C語言)結構體成員的引用->(箭頭)和 .(點),成員箭頭

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

編輯:關於C語言

(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;
}

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved