offsetof
函數(shù)用于獲取結(jié)構(gòu)體或類中某個成員的偏移量。
使用 offsetof
函數(shù)需要包含 <cstddef>
頭文件。
下面是 offsetof
函數(shù)的使用示例:
#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;
}
輸出結(jié)果為:
Offset of member y: 4
上述代碼中,offsetof(MyStruct, y)
返回 y
成員相對于 MyStruct
對象的起始地址的偏移量。在該例中,y
的偏移量為 4 字節(jié)(因為 int
類型占用 4 個字節(jié))。
注意,offsetof
函數(shù)只能用于 POD(plain old data)類型,即沒有非靜態(tài)成員函數(shù)、沒有虛函數(shù)、沒有基類的類型。對于非 POD 類型,如果需要獲取成員的偏移量,可以使用 reinterpret_cast
或 union
的方式來實現(xiàn)。