在c中查找结构元素的偏移量

struct a
{
        struct b
        {
                int i;
                float j;
        }x;
        struct c
        {
                int k;  
                float l;
        }y;
}z;

任何人都可以解释我如何找到int的偏移量,我们可以找到int i ????的地址

解决方法

使用offsetof()从z开始或从x的开始找到偏移量.

offsetof() – 结构成员的偏移量

概要

#include <stddef.h>

   size_t offsetof(type,member);

offsetof()返回字段成员的偏移量
开始结构类型.

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

   int
   main(void)
   {
       struct s {
           int i;
           char c;
           double d;
           char a[];
       };

       /* Output is compiler dependent */

       printf("offsets: i=%ld; c=%ld; d=%ld a=%ld\n",(long) offsetof(struct s,i),c),d),a));
       printf("sizeof(struct s)=%ld\n",(long) sizeof(struct s));

       exit(EXIT_SUCCESS);
   }

您将获得以下OUTPUT在Linux上,如果您使用GCC编译.

offsets: i=0; c=4; d=8 a=16
       sizeof(struct s)=16

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...