首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

超级郁闷有关问题,结构体如何会跳过一个字节!

2012-02-19 
超级郁闷问题,结构体怎么会跳过一个字节!!!!!#includestdio.h typedefstruct_qqhead{charqqhead//chard

超级郁闷问题,结构体怎么会跳过一个字节!!!!!
#include   "stdio.h "

typedef   struct   _qqhead
{
charqqhead;
//chardd;
unsigned   shortdatsign;
unsigned   shortmsgcommand;
unsigned   short   checkser;
}QQ_HEADER;

void   main()
{
char   kk[10];
for   (int   i=0;i <=9;i++)
{
kk[i]=i;
}
QQ_HEADER   *ip;
ip=(QQ_HEADER   *)&kk;
printf( "%c       %c     %d         %d         %d ",ip-> qqhead,ip-> dd,ip-> datsign,ip-> msgcommand,ip-> checkser);
}

如上面的程序,假设结构的的头指针指向
00   01   02   03   04   05   06   07   08   09           //内存数据
|
这里
第一个成员是0x00
怎么会第二个成员是0x0302
跳过了0x01,怎么回事?

加上了一个char   成员就可以读那个0x01了,我不明白.

我本来要用原始套接字读取数据包的,调试发现跳了一字节。才用上面的程序测试了一下子。
我的机器sizeof(char)为一个字节


[解决办法]
这个说起来比较多,楼主可以参考下面两个网页的内容。
http://dev.csdn.net/article/56/56202.shtm
http://www.yuanma.org/data/2006/0723/article_1213.htm

热点排行