知道地址怎么访问该地址的值
知道地址如何访问该地址的值?
假设我知道 int i 存了一个地址,那有什么方法可以访问到这个地址里存的值?
或者换个问题:知道一个类里的第一个成员类型是int(如class T{public int x;}A;,A是一个类变量), 但是不知道这个成员的名字(不知道是x,还是y,还是z),那有什么办法可以访问到A.x 吗?
------解决方案--------------------
如果你能确定i指向成员x,那么直接 *(int *)i就是x。
如果T有很多成员,而你根本不知道i指向哪个成员,那这个无解,除非你能对T的对象的地址进行限制,比如必须在64字节上对其
如果你知道i指向比如y,那么你可以通过(T *)(i - (size_t)&((T *)0)->y)获得i指向的那个y所在的T的指针,进一步访问x
假设我知道 int i 存了一个地址,那有什么方法可以访问到这个地址里存的值?
或者换个问题:知道一个类里的第一个成员类型是int(如class T{public int x;}A;,A是一个类变量), 但是不知道这个成员的名字(不知道是x,还是y,还是z),那有什么办法可以访问到A.x 吗?
------解决方案--------------------
如果你能确定i指向成员x,那么直接 *(int *)i就是x。
如果T有很多成员,而你根本不知道i指向哪个成员,那这个无解,除非你能对T的对象的地址进行限制,比如必须在64字节上对其
如果你知道i指向比如y,那么你可以通过(T *)(i - (size_t)&((T *)0)->y)获得i指向的那个y所在的T的指针,进一步访问x