xilinxer 发表于 2008-11-24 16:49

请教C语言如何把Char指针指向结构体?

请教各位C高手,我在设计中用到一个结构体来存储数据,为什么要用结构体,主要是因为结构体在内存中是连续存储的,这样可以比较方便用I2C来访问。但现在有一个问题。I2C是一个字节一个字节操作的。我怎样才能把一个指向char的指针指向结构体啊?

mohanwei 发表于 2008-11-24 17:21

强制转换……

xilinxer 发表于 2008-11-24 17:53

怎么转啊?

typedef&nbsp;struct&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />unsigned&nbsp;char&nbsp;ID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0<br />unsigned&nbsp;char&nbsp;ExtID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1<br />unsigned&nbsp;char&nbsp;Connector;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//2&nbsp;&nbsp;&nbsp;&nbsp;<br />unsigned&nbsp;char&nbsp;Transceiver;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//3-10&nbsp;&nbsp;&nbsp;&nbsp;<br />unsigned&nbsp;char&nbsp;Encoding;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//11<br />unsigned&nbsp;char&nbsp;Nominal;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//12<br />unsigned&nbsp;char&nbsp;Reserved1;<br />}A_struct;<br />A_struct&nbsp;xdata&nbsp;A0;<br /><br />unsigned&nbsp;char&nbsp;*byte_ptr;<br /><br />我需要用I2C访问这个结构,I2C收到的子地址+结构体的手地址赋给指针byte_ptr;<br />假设子地址为:unsigned&nbsp;char&nbsp;sub_addr;<br />怎样写代码比较好啊?谢谢啊。<br /><br />

清风一士 发表于 2008-11-24 18:12

这样就可以了

这样就可以了,byteptr=(A_struct&nbsp;*)A0<br />不过实际中大多数都是倒过来用吧,定义一个数组,然后结构体<br />指向数组中的某一个数据的地址,这样就可以方便的访问数组中的<br />内容了。

mohanwei 发表于 2008-11-24 19:44

强制转换是数据传输的时候经常用到的

struct&nbsp;asdf<br />{<br />int&nbsp;a,<br />float&nbsp;f,<br />char&nbsp;c,<br />...<br />}test;<br /><br />Write((unsigned&nbsp;char*)&test,sizeof(test));

soso 发表于 2008-11-25 13:11

采用共用体最好

&nbsp;&nbsp;&nbsp;&nbsp;不会增加任何代码的。

xilinxer 发表于 2008-11-26 13:18

谢谢大家!

我改成byteptr=(unsigned&nbsp;char*)&A0;就可以了!<br />EEproom用公用体的方法来实现是个好主意!我得试试!<br /><br />谢谢

后学 发表于 2008-11-27 23:57

好好看看C基础吧。。。

ffbiao 发表于 2008-11-30 13:33

re

&nbsp;&nbsp;你定义一个数据结构指针更直接吧,<br />&nbsp;&nbsp;A_struct&nbsp;xdata&nbsp;*A0;<br />&nbsp;&nbsp;取数据结构的数值:如:A0-&gtID...
页: [1]
查看完整版本: 请教C语言如何把Char指针指向结构体?