关于结构体的一个问题
#include <stdio.h>typedef struct
{
char ft1;
int ft;
}st1;
typedef struct
{
int z1;
char z2;
}st2;
st2 as_params;
void test(st1 *as_params_ptr)
{
unsigned char *pch;
int *pint;
pch = as_params_ptr;
pch++;
pint=pch;
printf("%x\n",*pint);
printf("%x\n",as_params_ptr->ft);
}
int main(void)
{
as_params.z1=0x12345678;
as_params.z2=0x33;
test((st1 *)&as_params);
getch();
}
我的本意是用两个排列顺序不同的结构体来测试交换后的结构,原来以为as_params_ptr->ft应该从第二个字节开始取4个字节,这样跟*pint的结果应该是一样的,结果却出乎意料,
33123456
33
不知道为啥,请大家帮忙分析一下。
[ 本帖最后由 pauljames 于 2012-12-6 19:18 编辑 ]