C語(yǔ)言 庫(kù)宏 offsetof()

C語(yǔ)言 庫(kù)宏 offsetof()

C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) <stddef.h>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é)。

C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) <stddef.h>C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) <stddef.h>

下一節(jié):C 標(biāo)準(zhǔn)庫(kù) <time.h>

C 簡(jiǎn)介

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频