|
<br />请教各位大虾<br />在头文件里定义了一个共用体<br />struct Var_All {<br /> unsigned int ii;<br /> unsigned long jj;<br />} ;<br /><br />union {<br /> unsigned int var_int[3];<br /> struct Var_All all_var;<br />} MYMODBUS;<br /><br /><br /><br />在主程序里随便赋值运行<br />MYMODBUS.all_var.ii=0x0102;<br />MYMODBUS.all_var.jj=0x05060708;<br /><br />看了一下watch窗口,发现<br />MYMODBUS.all_var.ii和MYMODBUS.all_var.jj都是对的;但<br />MYMODBUS.var_int[0]=0x0102;<br />MYMODBUS.var_int[1]=0x0001;<br />MYMODBUS.var_int[2]=0x0708;<br />为什么不是MYMODBUS.all_var.jj与MYMODBUS.var_int[1]、MYMODBUS.var_int[2]同一个储存地址呢?<br /><br />如果联合体里的数组定大一点如unsigned int var_int[4];则<br />MYMODBUS.var_int[0]=0x0102;<br />MYMODBUS.var_int[1]=0x0001;<br />MYMODBUS.var_int[2]=0x0708;<br />MYMODBUS.var_int[3]=0x0506;<br /><br />MYMODBUS.all_var.jj与MYMODBUS.var_int[2]、MYMODBUS.var_int[3]同一个储存地址,真是怪事了。 |
|