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.