打印

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

[复制链接]
2839|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 | 只看该作者
呃.....我是想帮忙来着   不过还得回去看书

使用特权

评论回复
5
lpydidi| | 2010-4-12 22:00 | 只看该作者
结构数组还有点了解,再加个指针就不是很懂了

使用特权

评论回复
6
highgear| | 2010-4-12 22:10 | 只看该作者
pTest = (unsigned char   *   )HistoryAlarm
or
pTest = &HistoryAlarm[0].AlarmNum

使用特权

评论回复
7
wanghaibo1026|  楼主 | 2010-4-13 09:56 | 只看该作者
请问楼上,能否将指针定义说明一下

使用特权

评论回复
8
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;

使用特权

评论回复
9
wanghaibo1026|  楼主 | 2010-4-13 10:39 | 只看该作者
谢谢

使用特权

评论回复
10
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……

使用特权

评论回复
11
踢球老越位| | 2010-4-13 11:53 | 只看该作者
11# john_light 比较规范哈

使用特权

评论回复
12
我很纠结| | 2010-4-13 17:32 | 只看该作者
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<32;i++) {
    tp=&TEST[i];
}

使用特权

评论回复
13
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


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

支持这种写法

使用特权

评论回复
14
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

粉丝