请教C语言如何把Char指针指向结构体?
请教各位C高手,我在设计中用到一个结构体来存储数据,为什么要用结构体,主要是因为结构体在内存中是连续存储的,这样可以比较方便用I2C来访问。但现在有一个问题。I2C是一个字节一个字节操作的。我怎样才能把一个指向char的指针指向结构体啊?强制转换……
怎么转啊?
typedef struct <br />{ <br />unsigned char ID; //0<br />unsigned char ExtID; //1<br />unsigned char Connector; //2 <br />unsigned char Transceiver; //3-10 <br />unsigned char Encoding; //11<br />unsigned char Nominal; //12<br />unsigned char Reserved1;<br />}A_struct;<br />A_struct xdata A0;<br /><br />unsigned char *byte_ptr;<br /><br />我需要用I2C访问这个结构,I2C收到的子地址+结构体的手地址赋给指针byte_ptr;<br />假设子地址为:unsigned char sub_addr;<br />怎样写代码比较好啊?谢谢啊。<br /><br />这样就可以了
这样就可以了,byteptr=(A_struct *)A0<br />不过实际中大多数都是倒过来用吧,定义一个数组,然后结构体<br />指向数组中的某一个数据的地址,这样就可以方便的访问数组中的<br />内容了。强制转换是数据传输的时候经常用到的
struct asdf<br />{<br />int a,<br />float f,<br />char c,<br />...<br />}test;<br /><br />Write((unsigned char*)&test,sizeof(test));采用共用体最好
不会增加任何代码的。谢谢大家!
我改成byteptr=(unsigned char*)&A0;就可以了!<br />EEproom用公用体的方法来实现是个好主意!我得试试!<br /><br />谢谢好好看看C基础吧。。。
re
你定义一个数据结构指针更直接吧,<br /> A_struct xdata *A0;<br /> 取数据结构的数值:如:A0->ID...
页:
[1]