本文主要是介绍C语言结构体成员偏移量的计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
请参考https://blog.csdn.net/coding__madman/article/details/51556411
计算方式:
1. 使用宏函数:
#include <stddef.h>size_t offsetof(type, member);
2. 自己计算偏移(B-A形式)
测试代码如下:
#include <stdio.h>
#include <stddef.h>struct str
{int a;int b;
};
int main()
{printf("a = %d\n",offsetof(struct str,a));printf("b = %d\n",offsetof(struct str,b));struct str s;printf("a = %d\n",(int)(&(s.a))-(int)(&s));printf("b = %d\n",(int)(&(s.b))-(int)(&s));printf("b = %d\n",(int)&(((struct str*)0)->b));return 0;
}
运行结果:
[root@localhost tmp]# ./a.out
a = 0
b = 4
a = 0
b = 4
b = 4
这篇关于C语言结构体成员偏移量的计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!