用memcpy c 读取并写入指针功能



嗨,今天我正在尝试清理我的代码,我在指针和纪念品上有些新。我想做的是我可以做的事情。

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

到目前为止代码 - 仅阅读

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));
}

如何通过使我的第一个指针将这两种方法"束缚"到一种方法中?

怎么样:

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

以这种方式,pos()应返回指向内部存储数据的VEC3指针。然后,pos()的呼叫者可以直接修改该数据(如果您确实想要的话)。

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

最新更新