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
的方式來實現。