C庫宏offsetof(type, member-designator) 結(jié)果在一個常數(shù)整數(shù) size_t 類型是一個結(jié)構(gòu)成員的結(jié)構(gòu)從一開始的字節(jié)偏移。構(gòu)件由下式給出部件指示符,是由于在不同的結(jié)構(gòu)的名稱。
以下是聲明的 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);
}
讓我們編譯和運行上面的程序,這將產(chǎn)生以下結(jié)果:
name offset = 0 byte in address structure. street offset = 50 byte in address structure. phone offset = 100 byte in address structure.