用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量。
如:stuct student
{
int a;
char b[20];
double ccc;
}
则:
FIND(student,a); //等于0
FIND(student,b);//等于4
#define FIND( struc, e ) (size_t)&(((struc*)0)- >e)
(struc*)0----------表示将常量0强制转化为struc *型指针所指向的地址
&(((struc*)0)- >e)--表示取结构体指针(struc*)0的成员e的地址,因为该结构体的首地址为0,所以其实就是得到了成员e距离结构体首地址的偏移量.
(size_t)-----------是一种数据类型,为了便于不同系统之间移植而定义的一种无符号型数据,一般为unsigned int
(struc*)0 表示假设在0地址处有一个结构体struc
((struc*)0)- >e 表示在0地址处的结构体struc的成员e
&(((struc*)0)- >e) 表示在0地址处的结构体struc的成员e 的地址
(size_t)&(((struc*)0)- >e) 将0地址处的结构体struc的成员e 的地址转换成整数类型
分享到:
相关推荐
如果建立了结构体向量,如何查找结构体向量中某变量值所在的向量单元。简单地说,就是结构体向量中有ID和数值,如果根据查找ID来更改数值呢?
定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年的问题。 2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入...
把c++的结构体、数据类型、函数定义转换成对应的c#表达,很强大。
C#结构体指针的定义及使用详解
结构体成员名与程序中变量名可相同,两者不代表同一个对象。 ;结构体变量的初始化 形式一 整体赋值法 ;结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员;main() { struct student { int No; ...
本文是关于结构体变量的复制与比较。
有五个学生,每个学生的数据包括学号,姓名,三门课的成绩
定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,程序能计算并输出该日在本年中是第几天,注意闰年问题。
用结构体求 投票
在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和c++等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把...
导入dbc文件,自动生成代码里面使用的结构体,方便新项目导入can功能,节省人工
Android 中在向服务器发送数据的时候可以定义结构体,便于后期的数据的添加,方便 简单
1、结构体转XML:定义...2、XML转结构体:这个不能直接转化,根据结构体定义,可生成XML转结构体的cs文件,可将生成文件中的类拷贝到你的工程中,调用相应函数,直接将第1步生成的XML字符串逆向转换为定义的结构体。
常用宏定义#define
定义复杂结构体—包括嵌套结构体数组,并显示结构体所占字节数。
目标:在一个线程运行的时候,主程序或者另一个线程,通过改变全局变量实时改变目标变量的做法,在linux下用make编译
定义结构体类型 定义结构体类型变量 引用结构体变量 给结构体变量赋值 结构体的嵌套 结构体数组 指向结构体类型变量的指针
该文件详细介绍了用sizeof求取struct结构体内存大小的各种情况
宏定义、结构体定义、函数声明以及全局变量定义放到一个head.h头文件中 函数的定义放到head.cpp中 main函数放到main.cpp中 然而却报错了,提示xxx变量在*.obj文件中已定义 问题出现的原因 为什么会出现这种...
(1) 学会和掌握结构体类型的定义方法和结构体变量的定义及初始化。 (2) 学会和掌握结构体数组的定义、初始化以及使用。 (3) 学会和掌握结构体类型指针的定义和使用。 过程与方法: (1) 培养学生对新事物的...