C/C++ 结构体通过指针移位取值
2014-10-10 11:05
232 查看
代码示例:
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++
- 通过一个结构体或者普通指针来调用一个带有虚拟函数的对象
- C/C++结构体和结构体指针使用之我见
- C++指向结构体变量的指针与链表结构的关系应用
- [转载]c/c++通过socket发送结构体_林少油_新浪博客
- c/c++通过socket发送结构体以及类对象
- 【分析】C++中通过溢出覆盖虚函数指针列表执行代码
- /C/C++ DLL在其它语言中的调用 结构体/数组 指针
- [C++]给指针赋值和通过指针进行赋值的区别?
- [C/C++][经典探讨]类继承中,通过基类指针delete释放,是否会造成内存泄漏
- more-effective-c++ 序列2 异常(第10节,通过智能指针解决构造函数的堆内存资源泄露)的测试示例
- ◆ C++中通过溢出覆盖虚函数指针列表执行代码
- C++带有指针数组的结构体转换为C#可用的结构体
- C++中通过溢出覆盖虚函数指针列表执行代码
- [C/C++][经典探讨]类继承中,通过基类指针delete释放,是否会造成内存泄漏
- C++中通过溢出覆盖虚函数指针列表执行代码
- C++中通过指针,引用方式做返回值的汇编代码分析
- 实验名称: C++数组、指针、结构体的使用
- c# 调用 研华库函数中 C++ 非托管 Dll 一例(包含指针成员的结构体的调用)
- 自增与指针取值运算符——C/C++运算符优先级表