(求助)关于结构数组的指针定义问题

[复制链接]
3849|13
 楼主| wanghaibo1026 发表于 2010-4-12 20:43 | 显示全部楼层 |阅读模式
unsigned char data *PTest ;
struct
{
unsigned char AlarmNum;     

unsigned char AlarmStatus;    /*告警状态  0:正常*/

unsigned char AlarmTable;     /*告警表下标*/
unsigned char StartTime[6];    /*告警开始时间*/
unsigned char EndTime[6];     /*告警结束时间*/
unsigned char temp;
}HistoryAlarm[32];       /*每个记录16个字节*/

//pTest = (unsigned char)HistoryAlarm;

请教大家 HistoryAlarm 数组的指针怎样定义,才能是指针指向HistoryAlarm[0].AlarmNum的地址

pTest = (unsigned char)HistoryAlarm;   这样定义是否可行?  急急!
 楼主| wanghaibo1026 发表于 2010-4-12 20:56 | 显示全部楼层
大家帮忙看看啊
 楼主| wanghaibo1026 发表于 2010-4-12 21:27 | 显示全部楼层
怎么没人帮忙啊
路艳华smile 发表于 2010-4-12 21:46 | 显示全部楼层
呃.....我是想帮忙来着   不过还得回去看书
lpydidi 发表于 2010-4-12 22:00 | 显示全部楼层
结构数组还有点了解,再加个指针就不是很懂了
highgear 发表于 2010-4-12 22:10 | 显示全部楼层
pTest = (unsigned char   *   )HistoryAlarm
or
pTest = &HistoryAlarm[0].AlarmNum
 楼主| wanghaibo1026 发表于 2010-4-13 09:56 | 显示全部楼层
请问楼上,能否将指针定义说明一下
lxyppc 发表于 2010-4-13 10:38 | 显示全部楼层
unsigned char data *PTest ;
struct
{
unsigned char AlarmNum;     

unsigned char AlarmStatus;    /*告警状态  0:正常*/

unsigned char AlarmTable;     /*告警表下标*/
unsigned char StartTime[6];    /*告警开始时间*/
unsigned char EndTime[6];     /*告警结束时间*/
unsigned char temp;
}HistoryAlarm[32],*pHistoryAlarm;       /*每个记录16个字节*/

pHistoryAlarm = HistoryAlarm;
PTest = &pHistoryAlarm->AlarmNum;
// 由于AlarmNum是结构体的第一个元素,下面这样写也是可以的
PTest = (unsigned char*)pHistoryAlarm;
 楼主| wanghaibo1026 发表于 2010-4-13 10:39 | 显示全部楼层
john_light 发表于 2010-4-13 11:38 | 显示全部楼层
是我的话,直接定义结构体指针:
struct _HistoryAlarm
{
    unsigned char AlarmNum;     
    unsigned char AlarmStatus;    /*告警状态  0:正常*/
    unsigned char AlarmTable;     /*告警表下标*/
    unsigned char StartTime[6];    /*告警开始时间*/
    unsigned char EndTime[6];     /*告警结束时间*/
    unsigned char temp;
};
struct _HistoryAlarm HistoryAlarm[32];       /*每个记录16个字节*/
struct _HistoryAlarm *PHistory;

pHistory = HistoryAlarm;

pHistory->AlarmNum = 0x……
踢球老越位 发表于 2010-4-13 11:53 | 显示全部楼层
11# john_light 比较规范哈
我很纠结 发表于 2010-4-13 17:32 | 显示全部楼层
  1. typedef struct {
  2.     unsigned char a;
  3.     unsigned char b;
  4.     unsigned char c;
  5. }teststr, *P_teststr;

  6. teststr TEST[32];
  7. P_teststr tp=NULL;
  8. for (i=0;i<32;i++) {
  9.     tp=&TEST[i];
  10. }
zhiyonghe 发表于 2010-4-13 21:05 | 显示全部楼层
typedef struct {
    unsigned char a;
    unsigned char b;
    unsigned char c;
}teststr, *P_teststr;

teststr TEST[32];
P_teststr tp=NULL;
for (i=0;i
我很纠结 发表于 2010-4-13 17:32


这因该是最为规范的了吧!!

支持这种写法
zhiyonghe 发表于 2010-4-13 21:15 | 显示全部楼层
本帖最后由 zhiyonghe 于 2010-4-13 21:24 编辑

typedef struct {

    unsigned char a;

    unsigned char b;

    unsigned char c;

}teststr,   看成 int

teststr TEST[32];   看成 int a

*P_teststr  看成*int

P_teststr tp=NULL; 看成 int b  以防指针乱指得先让他指向空NULL

以下就相当于 b=&a[1]
……呵呵, 鄙人初学者的理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

68

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部