learning offsetof func

C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t 的整型常量,

它是一个结构成员相对于结构开头的字节偏移量。

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

  • type -- 这是一个 class 类型,其中,member-designator 是一个有效的成员指示器。
  • member-designator -- 这是一个 class 类型的成员指示器。
#include <stddef.h>
#include <stdio.h>

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

int main(){

        printf("in struct address, name   offset %ld bytes\n", offsetof(struct address, name));
        printf("in struct address, street offset %ld bytes\n", offsetof(struct address, street));
        printf("in struct address, phone  offset %ld bytes\n", offsetof(struct address, phone));
        return 0;
}
                 

result:

./a.out 
in struct address, name   offset 0 bytes
in struct address, street offset 50 bytes
in struct address, phone  offset 100 bytes

  

posted @ 2020-01-14 14:23  嵌入式实操  阅读(137)  评论(0编辑  收藏  举报