设为首页 加入收藏

TOP

C/C++ 结构体通过指针移位取值
2014-11-23 19:26:43 来源: 作者: 【 】 浏览:37
Tags:C/C 结构 通过 指针 移位

C/C++ 结构体通过指针移位取值代码示例:


int _tmain(int argc, _TCHAR* argv[])
{
#pragma pack(1)
typedef struct{
int a;
char x;
int y;
char z[6];
}AAA;
printf("%d\n",sizeof(AAA));
AAA a = {1,'a',2,"bcdef"};
AAA* pa = &a;
int* test1 = (int *)(void *)pa;
char* test2 = (char *)(void *)(test1+1);
int* test3 = (int *)(void *)(test2+1);
char* test4 = (char *)(void *)(test3+1);
printf("%d ",*test1);
printf("%c ",*test2);
printf("%d ",*test3);
printf("%s", test4);
return 0;
#pragma pack()
}


编译器:visual studio2010


注意事项:
1、指针执行加减法,是将加减数值乘以该指针类型的大小作为移位的位数,因此需要强转为需要的类型
的指针类型作为运算数。
2、结构体内不能采用字符自动对齐,必须要用#pragma pack编译制导将对齐最小字符设为1才行,否则
偏移取值运算不能到达指定的位置


C语言梳理一下,分布在以下10个章节中:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JVM中classloader双亲委派 下一篇Java实现RSA加密解密 非对称算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: