有这样一个问题就是如何使用一个整数保存一个结构体或类以及其他类型的指针,这种需求在不同语言之间调用是存在的,例如有一个结构体A:
struct A { char item1; int item2 };
正确的方式如下:
unsigned int b = 0; struct A* a = new A; *(struct A**)&b = a;
至于这一段怎么理解,我说说个人的理解。
1、&b是取址操作,获取b的地址
2、A**后面的*是指针变量的定义形式,没有前面的*则表示这是一个指向A的指针变量,加上前面的*表示它指向的是一个A的指针型变量的
3、最外的的*是解引用操作,就是改变指向位置的值
简单直白点就是将b的地址指向的位置转化成指向A*的地址,并将该地址存储的值改为要保存的值。
原文地址:http://blog.csdn.net/wdxin1322/article/details/40585913