单片机/MCU论坛
直播中

siyun-22@163.co

13年用户 3经验值
擅长:模拟与电源 数字及可编程逻辑 EDA/IC/PCB设计 工业控制
私信 关注
[问答]

C语言结构体组及指针问题

extern xdata struct msg setvalue[5];//设定参数  --结构体组
extern idata struct msg *CurSetPara;//指向结构体的指针

下面的两个子函数:
void write6word(unsigned int address)
{
EEPROM_writeword(address,CurSetPara->Set_temp);
_nop_();
_nop_();
EEPROM_writeword(address+2,CurSetPara->Set_hum);
_nop_();
_nop_();
EEPROM_writeword(address+4,CurSetPara->Set_hq1);
_nop_();
_nop_();
EEPROM_writeword(address+6,CurSetPara->Set_hq2);
_nop_();
_nop_();
EEPROM_writeword(address+8,CurSetPara->Set_fd1);
_nop_();
_nop_();  
EEPROM_writeword(address+10,CurSetPara->Set_fd2);
_nop_();
_nop_();
}

//第一组参数放在第二扇区
void read_E2rom1()
{
CurSetPara=setvalue;
read6word(0x0210);
}
我的问题是:指针变量CurSetPara指向的是结构体的首地址吗?不知道这种问法恰不恰当!在void read_E2rom1()函数中,setvalue变量,在此setvalue与extern xdata struct msg setvalue[5]中的数组名称相同,这样是不是能正常编译?将setvalue变量,赋值给CurSetPara,从某种意义上来讲,就是又在另一个空间地址上读取一个结构体的成员内容,是这样吗?
extern xdata struct msg setvalue[5];//设定参数  --结构体组
extern idata struct msg *CurSetPara;//指向结构体的指针
这两句中,变量类型extern xdata和extern idata 是否相同?都是外部变量,xdata和idata在C51中是有区别的,然而之前加extern后又是什么情况?
请大侠不吝赐教,感激不尽!

回帖(1)

祝珊

2012-9-24 22:59:21
     。。。。。。。。。。。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分