我是靠谱客的博主 动听云朵,最近开发中收集的这篇文章主要介绍关于宏offsetof,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
struct s {
int i;
char c;
char d;
int a;
};
/* Output is compiler dependent */
printf("offsets: i=%ld; c=%ld; d=%ld a=%ldn",
(long) offsetof(struct s, i),
(long) offsetof(struct s, c),
(long) offsetof(struct s, d),
(long) offsetof(struct s, a));
printf("sizeof(struct s)=%ldn", (long) sizeof(struct s));
exit(EXIT_SUCCESS);
}

宏的头文件和声明:

#include <stddef.h>

size_t offsetof(type, member);
 

先上测试代码,结构体struct s的结构如上,占用内存空间12个字节,其中i占4个字节,为了内存对齐,c和d占了4个字节,a占四个字节。

  1. offsetof(struct s, i)   表示i成员在结构体struct s首地址的偏移地址,为0
  2. offsetof(struct s, c) 表示c成员在结构体struct s首地址的偏移地址,为4
  3. offsetof(struct s, d) 表示d成员在结构体struct s首地址的偏移地址,为5
  4. offsetof(struct s, a) 表示a成员在结构体struct s首地址的偏移地址,为8

最后

以上就是动听云朵为你收集整理的关于宏offsetof的全部内容,希望文章能够帮你解决关于宏offsetof所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部