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

关于结构体成员的引用有这样的规律:

箭头(->):左边必须为指针;(注意其实不是箭头而是两个符号)
点号(.):左边必须为实体。

那么如果一个结构体指针引用一个成员,这个成员又是一个结构体(并且是一个实体),那么如果要引用这个成员的成员要怎么办呢?

经过实验发现,依然遵循上面的规则即:箭头左边必须是指针,实体一定要用点号引用。比如:

一开始都用箭头即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;
    cc.s1.age=9;
    cc.s1.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;
    cc.s1.age=9;
    cc.s1.class_=2;
        c=&cc;
        printf("%d",c->s1.age);
        return 0;
    }

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

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值