首页 > 代码库 > (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;}

则编译通过得到运行结果:

技术分享

 

(C语言)结构体成员的引用->(箭头)和 .(点)