<转> 求结构体偏移

原文出处忘记了。。。

此宏很神奇

#define FIND(structTest,e) (size_t)&(((structTest*)0)->e)

 

struct test
{
int a;
int b;
char c;
int d;
};
size_t s = FIND(test,a);
cout<<s<<endl;  //输出结构体偏移

时间: 2024-08-02 07:22:02

<转> 求结构体偏移的相关文章

C语言中结构体偏移及结构体成员变量访问方式的问题讨论_C 语言

c语言结构体偏移 示例1 我们先来定义一下需求: 已知结构体类型定义如下: struct node_t{ char a; int b; int c; }; 且结构体1Byte对齐 #pragma pack(1) 求: 结构体struct node_t中成员变量c的偏移. 注:这里的偏移量指的是相对于结构体起始位置的偏移量. 看到这个问题的时候,我相信不同的人脑中浮现的解决方法可能会有所差异,下面我们分析以下几种可能的解法: 方法1 如果你对c语言的库函数比较熟悉的话,那么你第一个想到的肯定是of

一道用 sizeof 求结构体所占大小的笔试题?求教

问题描述 一道用 sizeof 求结构体所占大小的笔试题?求教 下列程序,为什么输出的结果是 120? int main(int argc, char* argv[]) { union u_type { int i; double x; float f; }; struct str_type { char str[100]; union u_type u[2]; }; printf("%dn",sizeof(struct str_type)); } 解决方案 首先union u_typ

c语言-求大神,C语言求 结构体

问题描述 求大神,C语言求 结构体 有5个学生,每个学生的数据包括学号.姓名.3门课的成绩,从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及最高分的学生的数据. 要求用一个input函数输入3个学生数据,用一个average函数求总平均分,用max函数找出最高分的学生数据,总平均分和最高分的学生数据都在主函数中输出. 写到这里,报错太多,写不下去了 解决方案 首先,你的student结构体定义了没有.你有没有定义全局的stu,造成了冲突. 然后,你函数是不是和库函数冲突,比如max,在标

详解C语言的结构体中成员变量偏移问题_C 语言

c语言中关于结构体的位置偏移原则简单,但经常忘记,做点笔记以是个记忆的好办法 原则有三个: a.结构体中的所有成员其首地址偏移量必须为器数据类型长度的整数被,其中第一个成员的首地址偏移量为0, 例如,若第二个成员类型为int,则其首地址偏移量必须为4的倍数,否则就要"首部填充":以此类推 b.结构体所占的总字节数即sizeof()函数返回的值必须是最大成员的长度的整数倍,否则要进行"末尾填充": c.若结构体A将结构体B作为其成员,则结构体B存储的首地址的偏移量必须

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

c-顺序表 结构体 求指教

问题描述 顺序表 结构体 求指教 #include #include #include #define MAXSIZE 100 typedef struct{ char *name; char *Num; }DataType; DataType re1,re2,re3; typedef struct{ DataType *data; int length; }SeqList; //初始化 void InitList(SeqList *L) { L->data=(DataType*)malloc(

跪求安卓客户端如何接收Ubuntu系统过来的结构体协议,还有应该怎么发送过去

问题描述 跪求安卓客户端如何接收Ubuntu系统过来的结构体协议,还有应该怎么发送过去 安卓客户端怎么接受C语言写的结构体协议,应该怎么发送到服务器端进行数据交互 解决方案 如果是直接序化 c 的结构体,就要了解 c 结构体的内存布局.还有内存大小端问题 如果在安桌端用的是 java / c# 等.来反序化原始的 c结构内存数据,有点烦人. 建议选用 protobuf ans1 等格式化 解决方案二: 两边约定好就可以,或者序列化成json,xml. 解决方案三: 现在这个问题,,已经解决了,,

调试-求大神~~ c free()结构体指针出错

问题描述 求大神~~ c free()结构体指针出错 本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦! 注:本人用的是VC6.0.自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~ 补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题? #include <stdio.h> #include <stdlib.h> #include <malloc.h> st

求解释c++结构体。。。

问题描述 求解释c++结构体... struct Snake { Snake() :next(NULL), before(NULL) { pt.x = 0; pt.y = 0; } Snake(const POINT &npt, Snake *, Snake *); POINT pt; Snake * next, *before; } snake; //定义蛇头 在学windows api,找了个贪吃蛇,这段代码实在看不懂了,求大神解释一下,或者用类来代替一下也好 解决方案 Snake() :n