您的位置:首页 > 大数据 > 人工智能

一个简单程序演示container_of的原理

2012-09-22 23:25 197 查看
container_of是内核中常用到的一个宏,它的功能是从结构体内成员的地址得到结构体本身的地址。

下面用一个应用程序演示这个功能如何实现的。

#include <stdio.h>

struct temp{

int a;

char b;

double c;

};

struct temp t[3]={

{1,'a',1.1},

{2,'b',2.2},

{3,'c',3.3},

};

/*主程序,从t[1].b的地址,得到t[1]的地址,进而可以访问数组t的所有成员*/

int main()

{

char *pch=&(t[1].b);

struct temp *p;

//下句是关键

p=(struct temp *)(pch-(char *)(&(((struct temp *)0)->b)));

//从p依次输出t[0].b,t[1].a,t[2].c的内容。

printf("%c\n",(p-1)->b);

printf("%d\n",p->a);

printf("%lf\n",(p+1)->c);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: