读书人

超级郁闷有关问题结构体如何会跳过一

发布时间: 2012-02-19 19:43:38 作者: rapoo

超级郁闷问题,结构体怎么会跳过一个字节!!!!!
#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

读书人网 >C语言

热点推荐