C 庫宏– offsetof()
描述
C庫宏offsetof(type, member-designator)會生成一個類型為size_t的整型常量,它是一個結構成員相對於結構開頭的字節偏移量。 成員是由member-designator 給定的,結構的名稱是在type 中給定的。
聲明
下面是offsetof() 宏的聲明。
offsetof(type, member-designator)
參數
- type --這是一個class類型,其中,member-designator是一個有效的成員指示器。
- member-designator --這是一個class類型的成員指示器。
返回值
該宏返回類型為size_t的值,表示type中成員的偏移量。
實例
下面的實例演示了offsetof() 宏的用法。
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("address 结构中的 name 偏移 = %d 字节。\n", offsetof(struct address, name)); printf("address 结构中的 street 偏移 = %d 字节。\n", offsetof(struct address, street)); printf("address 结构中的 phone 偏移 = %d 字节。\n", offsetof(struct address, phone)); return(0); }
讓我們編譯並運行上面的程序,這將產生以下結果:
address 结构中的 name 偏移 = 0 字节。 address 结构中的 street 偏移 = 50 字节。 address 结构中的 phone 偏移 = 100 字节。