首页 > 代码库 > 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/C++ 结构体通过指针移位取值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。