使用memcpy c ++读写指针函数

时间:2014-01-21 12:15:37

标签: c++ pointers memcpy

嗨,今天我正在尝试清理我的代码,而且我对指针和memcpy有点新意。 我想做的是我能做到的事情。

pos() - > x = 500; 甚至是printf(pos-> x)

CODE SO FAR - 仅供参考

struct vec3
{
    float x, y, z;
};

vec3 client::pos()
{
    vec3 vPos;
    memcpy(&vPos, &(*(float *)(state() + 0x1C)), sizeof(vec3));
    return vPos;
}

上面的代码将正确返回Z,Y和Z线,但显然它不是指针,因此不能设置一个。

我真的不知道如何能够逆转上述方法的使用而不是逆转,而是两种方式使用它然后为此定义两种方法。

以下是我目前如何设置pos

的示例
void client::setPos(float x, float y, float z)
{
    vec3 vPos = {
        x==NULL?pos().x:x,
        y==NULL?pos().y:y,
        z==NULL?pos().z:z
    };
    memcpy(&(*(float *)(state() + cordX)), &vPos, sizeof(vec3));
}

如何通过使我的第一个方法成为指针来将这两个方法“绑定”成一个?

1 个答案:

答案 0 :(得分:0)

这个怎么样:

vec3* client::pos()
{
    return (vec3*)(state() + 0x1C);
}

这样,pos()应该返回一个指向内部存储数据的vec3指针。然后pos()的调用者可以直接修改那些数据(如果这真的是你想要的话)。

请注意,您要发出指向内部内存的指针,您必须以某种方式处理内存生存期问题(例如,如果state()稍后指向不同的内存而某人仍然使用pos()的返回值,会发生什么? )。