对于包含struct的union,如何对其Struct成员进行赋值。

woneedjob 2011-07-05 09:42:23

typedef struct
{
double u16RecPhaseVolt[3]; //0x01
double u16RecLineVolt[3]; //0x02
double u16RecPhaseCurr[3]; //0x03
double u16RecFreq[3]; //0x04
double u16RecPF[3]; //0x05
double u16RecBusVolt[3]; //0x06
double u16RecZeroCurr[3]; //0x07
double u16RecModuleTemp[3]; //0x08
double u16RecBatTemp[3]; //0x09
double u16RecBatVolt[3]; //0x0a
double u16RecBatChgVolt[3]; //0x0b
double u16RecBatChgCurr[3]; //0x0c
double u16RecBatDischgCurr[3];//0x0d
}RecDisplayMonitorMEM;
typedef union
{
double u16Array[0x0d][3];
RecDisplayMonitorMEM stMember;
}RECDisMONITORING;
//是不是可以通过类似下面代码对RecDisplayMonitorMEM 里面的成员赋值,为什么可以这样,why?说具体点哦,谢谢。
g_fRecMonitor[u16DSPOffset].u16Array[u16Index][0] = ((double)u16RxCanData1)
...全文
324 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
至善者善之敌 2011-07-05
  • 打赏
  • 举报
回复
只不过多加了个UNION而已啊,改怎么用就怎么用,不过要记住UNION是共用内存的,你给其中一个赋值,相当于给另外一个赋值了
qq120848369 2011-07-05
  • 打赏
  • 举报
回复
只不过多加了个UNION而已啊,不影响你,完全就是个struct。
bdmh 2011-07-05
  • 打赏
  • 举报
回复
union只能取其中一个,你的赋值方法为什么不可以呢,你对u16Array赋值,就会影响到stMember的内存数据,你先搞清楚union和struct的区别吧
Qlaiaqu 2011-07-05
  • 打赏
  • 举报
回复
union本身的行为只是说多个成员之间使用同一段内存而已,其行为完全可以按照普通的结构体来对成员进行操作。只不过,任何时候只可以使用其中的一个成员而已。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧