offsetof() - C函數
C庫宏offsetof(type, member-designator) 結果在一個常數整數 size_t 類型是一個結構成員的結構從一開始的字節偏移。構件由下式給出部件指示符,是由於在不同的結構的名稱。
聲明
以下是聲明的 offsetof() 宏。
offsetof(type, member-designator)
參數
-
type -- 這個類成員指示符類型是一個有效的成員指示符。
-
member-designator -- 這是類類型成員指示符。
返回值
該宏返回值的類型是size_t,該類型成員的偏移值。
例子
下麵的例子演示了如何使用offsetof() 宏。
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("name offset = %d byte in address structure. ", offsetof(struct address, name)); printf("street offset = %d byte in address structure. ", offsetof(struct address, street)); printf("phone offset = %d byte in address structure. ", offsetof(struct address, phone)); return(0); }
讓我們編譯和運行上麵的程序,這將產生以下結果:
name offset = 0 byte in address structure. street offset = 50 byte in address structure. phone offset = 100 byte in address structure.