offsetof
函数用于获取结构体或类中某个成员的偏移量。
使用 offsetof
函数需要包含 <cstddef>
头文件。
下面是 offsetof
函数的使用示例:
#include <cstddef>
struct MyStruct {
int x;
char y;
float z;
};
int main() {
size_t offset = offsetof(MyStruct, y);
std::cout << "Offset of member y: " << offset << std::endl;
return 0;
}
输出结果为:
Offset of member y: 4
上述代码中,offsetof(MyStruct, y)
返回 y
成员相对于 MyStruct
对象的起始地址的偏移量。在该例中,y
的偏移量为 4 字节(因为 int
类型占用 4 个字节)。
注意,offsetof
函数只能用于 POD(plain old data)类型,即没有非静态成员函数、没有虚函数、没有基类的类型。对于非 POD 类型,如果需要获取成员的偏移量,可以使用 reinterpret_cast
或 union
的方式来实现。