各位大侠, 外部打印值,和内部赋的值,完全不一样,为什么呢,怎么解决? 请看下面的程序。
程序: =========================== typedef
struct AUTO_SUBMIT_ST { char cAutoSubmitFlag; // 自动上报开关
unsigned int uiStartTime; // 开始时间 unsigned int uiEndTime; // 结束时间
unsigned int uiTimeCycle; // 周期时间 unsigned int uiLastTime; //
上一次上报时间 }__attribute__((packed))AutoSubmitInfo; // 自动上报信息结构体
void
testfun(unsigned int * output, unsigned short input) {
*output=(unsigned int )input;//函数内
部赋值 printf("%x=%x\n",output,*output); printf("%x
",*((char*)output+0));printf("%x ",*((char*)output+1));printf("%x
",*((char*)output+2));printf("%x \n",*((char*)output+3)); } int
main(int argn, char *argc) { AutoSubmitInfo testdata; AutoSubmitInfo*
pst=&testdata;
testfun(&(pst->uiLastTime), 0xbc);
printf("%x=%x\n",&(pst->uiLastTime),pst->uiLastTime);//外部打印值,和内部赋的值,完全不一样,为什么呢,怎么解决?
printf("%x ",*((char*)(&(pst->uiLastTime))+0));printf("%x
",*((char*)(&(pst->uiLastTime))+1));printf("%x
",*((char*)(&(pst->uiLastTime))+2));printf("%x
\n",*((char*)(&(pst->uiLastTime))+3)); } =========================== 编
译: [root@localhost MIT]# arm-linux-gcc test.c =========================== 打
印结果: [/mnt/nfs]./a.out 内部bffffe59=bc000000 0 0 0 a4 外
部bffffe59=a4000000 0 0 0 a4
|