最近在做配电终端的一个项目 要用到许多struct结构,需要从eeprom中读入数据 ,struct结构的取地址和赋值问题没有搞清楚,故自己检测了一下:
程序如下:
#pragma pack(1)
#define SRTermParaType struct strSRTermParaType
struct strSRTermParaType
{
struct
{
char D1;
char D2[2];
}F1; //终端通信参数 F1
struct
{
char Ip1;
char Port1[2];
}F3; //主站IP地址和端口号 F3
};
void main()
{
SRTermParaType srt={0,4,1,2,1,8};
/*
srt.F1.D1={1};
srt.F1.D2={2,3};
srt.F3.Ip1={10,11};
srt.F3.Port1={19};
*/
printf("srt.F3=%d /n",srt.F3);
printf("srt.F1=%d /n",srt.F1);
printf("&srt.F3=%d /n",&srt.F3);
printf("&srt.F1=%d /n",&srt.F1);
printf("srt.F1.D1=%d /n",srt.F1.D1);
printf("&srt.F1=%d /n",&srt.F1);
printf("srt.F1.D2=%d /n",srt.F1.D2);
printf("srt.F1.D2[0]=%d/n",srt.F1.D2[0]);
}
结果如下:
srt.F3=524546
srt.F1=66560
&srt.F3=1245051
&srt.F1=1245048
srt.F1.D1=0
&srt.F1=1245048
srt.F1.D2=1245049
srt.F1.D2[0]=4