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

最近在看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。也就是说,这样写是合法的,而且可能会造成循环。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容