美文网首页
c语言之两个结构体中含有指向对方的指针成员

c语言之两个结构体中含有指向对方的指针成员

作者: 窗前的樱花 | 来源:发表于2018-06-25 11:49 被阅读0次

    最近在看linux-0.11源码,发现struct task_struct和struct m_inode各有一个指向对方的指针作为成员,当时觉得很矛盾,于是写了代码验证。


    #include<stdio.h>

    struct A;

    struct B

    {

    struct A *a;

    int bb;

    };

    struct A

    {

    struct B *b;

    int aa;

    };

    int main()

    {

    struct A AA;

    struct B BB;

    BB.a = &AA;

    AA.b = &BB;

    //BB.a->b->a->b->bb = 1;

    BB.bb = 2;          //这里和下面要输出的其实是一个变量

    printf("%d\n", BB.a->b->a->b->bb);

    return 0;

    }


    编译运行都没有错误,输出结果是2。也就是说,这样写是合法的,而且可能会造成循环。

    相关文章

      网友评论

          本文标题:c语言之两个结构体中含有指向对方的指针成员

          本文链接:https://www.haomeiwen.com/subject/pvzeyftx.html