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.