C 语言库宏 - offsetof()

返回上一级

C 语言标准库 <stddef.h> 宏 offsetof(type, member-designator) 返回一个结构成员相对于结构开头的字节偏移量。返回值类型为 size_t

成员是由 member-designator 给定的,结构的名称是在 type 中给定的

头文件

#include <stddef.h>

宏声明

下面是 offsetof() 宏的声明

offsetof(type, member-designator)

参数

  • type:这是一个 class 类型,其中 member-designator 是一个有效的成员指示器

  • member-designator:这是一个 class 类型的成员指示器

返回值

该宏返回类型为 size_t ,表示 type 中成员的偏移量

范例

下面的范例演示了 offsetof() 宏的用法

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 *
 * Copyright © 2015-2065 www.twle.cn. All rights reserved.
 */

#include <stddef.h>
#include <stdio.h>

struct address {
   char name[50];
   char street[50];
   int phone;
}st;

int main()
{
   printf("address 结构中的 name   偏移 = %ld 字节\n",
   offsetof(struct address, name));

   printf("address 结构中的 street 偏移 = %ld 字节\n",
   offsetof(struct address, street));

   printf("address 结构中的 phone  偏移 = %ld 字节\n",
   offsetof(struct address, phone));

   return(0);
}

编译运行范例,输出结果如下

$ gcc main.c && ./a.out
address 结构中的 name   偏移 = 0 字节
address 结构中的 street 偏移 = 50 字节
address 结构中的 phone  偏移 = 100 字节

返回上一级

C 语言标准库

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.