码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-05 20:42:34      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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

箭头(->):左边必须为指针;
点号(.):左边必须为实体。

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

经过实验发现,依然遵循上面的规则即:箭头左边必须是指针,实体一定要用点号引用。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语言)结构体成员的引用->(箭头)和 .(点)

标签:

原文地址:http://www.cnblogs.com/winifred-tang94/p/5843440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!