打印

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

[复制链接]
5082|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xilinxer|  楼主 | 2008-11-24 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位C高手,我在设计中用到一个结构体来存储数据,为什么要用结构体,主要是因为结构体在内存中是连续存储的,这样可以比较方便用I2C来访问。但现在有一个问题。I2C是一个字节一个字节操作的。我怎样才能把一个指向char的指针指向结构体啊?

相关帖子

沙发
mohanwei| | 2008-11-24 17:21 | 只看该作者

强制转换……

使用特权

评论回复
板凳
xilinxer|  楼主 | 2008-11-24 17:53 | 只看该作者

怎么转啊?

typedef struct 
{                        
unsigned char ID;                    //0
unsigned char ExtID;                //1
unsigned char Connector;            //2    
unsigned char Transceiver[8];        //3-10    
unsigned char Encoding;                //11
unsigned char Nominal;                //12
unsigned char Reserved1;
}A_struct;
A_struct xdata A0;

unsigned char *byte_ptr;

我需要用I2C访问这个结构,I2C收到的子地址+结构体的手地址赋给指针byte_ptr;
假设子地址为:unsigned char sub_addr;
怎样写代码比较好啊?谢谢啊。

使用特权

评论回复
地板
清风一士| | 2008-11-24 18:12 | 只看该作者

这样就可以了

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

使用特权

评论回复
5
mohanwei| | 2008-11-24 19:44 | 只看该作者

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

struct asdf
{
int a,
float f,
char c,
...
}test;

Write((unsigned char*)&test,sizeof(test));

使用特权

评论回复
6
soso| | 2008-11-25 13:11 | 只看该作者

采用共用体最好

    不会增加任何代码的。

使用特权

评论回复
7
xilinxer|  楼主 | 2008-11-26 13:18 | 只看该作者

谢谢大家!

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

谢谢

使用特权

评论回复
8
后学| | 2008-11-27 23:57 | 只看该作者

好好看看C基础吧。。。

使用特权

评论回复
9
ffbiao| | 2008-11-30 13:33 | 只看该作者

re

  你定义一个数据结构指针更直接吧,
  A_struct xdata *A0;
  取数据结构的数值:如:A0->ID...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

170

帖子

1

粉丝