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