目录
宏的介绍
代码实现
宏的介绍offsetof 是一个宏,并非是一个函数 !!!
代码实现参数:第一个是结构体类型名称,第二个是结构体成员名
返回类型:size_t无符号整形
引用的头文件:
#include
struct Stu { int a;//0~3 char c;//4 double d;//8~15 }; int main() { printf("%u\n", sizeof(struct Stu)); printf("%u\n", offsetof(struct Stu, a)); printf("%u\n", offsetof(struct Stu, c)); printf("%u\n", offsetof(struct Stu, d)); return 0; }
struct Stu { int a; char c; double d; }; #define OFFSETOF(struct_name, mem_name) (int) & (((struct_name*)0) -> mem_name) int main() { printf("%d\n", OFFSETOF(struct Stu, a)); printf("%d\n", OFFSETOF(struct Stu, c)); printf("%d\n", OFFSETOF(struct Stu, d)); return 0; }
就是将结构体指针规定为0,然后把其他成员的地址-首地址,就是最后的偏移量
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)