当前位置: 代码迷 >> C语言 >> 有编程经验的人进来看下这个问题?
  详细解决方案

有编程经验的人进来看下这个问题?

热度:170   发布时间:2006-10-19 20:45:11.0
主要是字节对齐造成的影响,
#pragma pack(1)
加上这个就可以得到想要得答案了
----------------解决方案--------------------------------------------------------

#include <stdio.h>

struct one
{ char c;
int a;
short b;
};

struct two
{

char y;int x;
short z;
};

void main(void)
{

printf("%d\n",sizeof(one));
printf("%d\n",sizeof(two));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(short));
}
这个程序可以吗?顺序不同结果不一样,毕竟为什么


----------------解决方案--------------------------------------------------------
#pragma pack(1)这个是为什么
----------------解决方案--------------------------------------------------------
VC是4个字节来分配,不到4补到4位.
----------------解决方案--------------------------------------------------------

有没有人回答我问题。


----------------解决方案--------------------------------------------------------
#pragma pack(1)
他的作用是让内存按一个字节对齐
----------------解决方案--------------------------------------------------------
这些细节,我还要继续学习
----------------解决方案--------------------------------------------------------

确实学到一些东西。不过在tc下是3。就没有这个问题了。


----------------解决方案--------------------------------------------------------
以下是引用踏魔狼在2006-10-19 21:08:20的发言:
VC是4个字节来分配,不到4补到4位.

这个回答好像有点问题吧????

[此贴子已经被作者于2006-10-19 22:12:37编辑过]


----------------解决方案--------------------------------------------------------
以下是引用bestboy555在2006-10-19 21:55:14的发言:

这个回来好像有点问题吧????

有什么问题?
VC缺省情况下是按 #pragma pack(4)执行的


----------------解决方案--------------------------------------------------------
  相关解决方案