offsetof()是一个宏
返回的是: 结构体成员 在内存中的偏移量。
#include<stdio.h>
#include<stddef.h>
struct S
{
char c1;
int a;
char c2;
};
int main()
{
//offsetof()返回 结构体成员 在内存中的偏移量
printf("%d\n", offsetof(struct S, c1));//0
printf("%d\n", offsetof(struct S, a));//4
printf("%d\n", offsetof(struct S, c2));//8
return 0;
}
模拟实现宏offsetof:
#include<stdio.h>
struct S
{
char c1;
int a;
char c2;
};
//将结构体首地址设置为0,则结构体成员 的地址 就是对应的偏移量。
#define OFFSETOF(struct_name,member_name) (int)&( ( (struct_name*)0 )->member_name )
int main()
{
printf("%d\n", OFFSETOF(struct S, c1));//0
printf("%d\n", OFFSETOF(struct S, a));//4
printf("%d\n", OFFSETOF(struct S, c2));//8
return 0;
}
版权声明:本文为weixin_45275802原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。