C語(yǔ)言 庫(kù)宏 offsetof()
C語(yǔ)言 庫(kù)宏 offsetof()
C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) <stddef.h>
C 庫(kù)宏 offsetof(type, member-designator) 會(huì)生成一個(gè)類型為 size_t 的整型常量,它是一個(gè)結(jié)構(gòu)成員相對(duì)于結(jié)構(gòu)開(kāi)頭的字節(jié)偏移量。成員是由 member-designator 給定的,結(jié)構(gòu)的名稱是在 type 中給定的。
1. 聲明
下面是 offsetof() 宏的聲明。
offsetof(type, member-designator)
2. 參數(shù)
- type -- 這是一個(gè) class 類型,其中,member-designator 是一個(gè)有效的成員指示器。
- member-designator -- 這是一個(gè) class 類型的成員指示器。
3. 返回值
該宏返回類型為 size_t 的值,表示 type 中成員的偏移量。
4. 實(shí)例
下面的實(shí)例演示了 offsetof() 宏的用法。
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("address 結(jié)構(gòu)中的 name 偏移 = %d 字節(jié)。\n", offsetof(struct address, name)); printf("address 結(jié)構(gòu)中的 street 偏移 = %d 字節(jié)。\n", offsetof(struct address, street)); printf("address 結(jié)構(gòu)中的 phone 偏移 = %d 字節(jié)。\n", offsetof(struct address, phone)); return(0); }
讓我們編譯并運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
address 結(jié)構(gòu)中的 name 偏移 = 0 字節(jié)。 address 結(jié)構(gòu)中的 street 偏移 = 50 字節(jié)。 address 結(jié)構(gòu)中的 phone 偏移 = 100 字節(jié)。
相關(guān)文章
- C++ 數(shù)組
- C++ 指針
- C++ 繼承
- C++ 數(shù)據(jù)抽象
- C++ 數(shù)據(jù)封裝
- C++ 資源
- C語(yǔ)言 typedef
- C語(yǔ)言 強(qiáng)制類型轉(zhuǎn)換
- C語(yǔ)言 錯(cuò)誤處理
- C語(yǔ)言 可變參數(shù)
- C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) <float.h>
- C# 程序結(jié)構(gòu)
- C# 數(shù)組 Array
- C# 字符串 String
- C# 接口 Interface
- C++ 指針 vs 數(shù)組
- C++ 一元運(yùn)算符重載
- C# 排序列表(SortedList)
- C# 點(diǎn)陣列(BitArray)
- C# switch 語(yǔ)句