C++ 将char*强制转换为链接列表

C++ 将char*强制转换为链接列表,c++,casting,linked-list,byte,nodes,C++,Casting,Linked List,Byte,Nodes,我的链接列表: struct Node{ bool inUse; unsigned int size; Node *next; }; 总字节数=12,带填充 tmp->inUse = true; tmp->size = size; tmp->next = (Node*)((char*)(tmp + 2)); 问题出在我的tmp->next中。我试图让tmp->next指向tmp的第二个字节。 但它移动24字节tmp+2=24字节 由于我将char*强

我的链接列表:

struct Node{
    bool inUse;
    unsigned int size;
    Node *next;
};
总字节数=12,带填充

tmp->inUse = true;
tmp->size = size;
tmp->next = (Node*)((char*)(tmp + 2));
问题出在我的
tmp->next
中。我试图让
tmp->next
指向
tmp
的第二个字节。 但它移动
24字节
tmp+2=24字节

由于我将char*强制转换为它,我希望它从
tmp
开始移动2个字节。 我哪里出错了


谢谢

正如汤姆斯·巴丹所说
(节点*)((字符*)(tmp+2));应该按照您所解释的做,因为tmp+2在tmp数据的大小(sizeof(Node))上向前移动了两步。但是您正在尝试的指针似乎非常模糊。

您是否尝试过tmp->next=(Node*)((char*)tmp+2);我刚把父母的衣服脱了你为什么要这么做<代码>节点*应该指向一个完整的
节点
,而不是它的一个部分。@Tomás Badan哦,天哪,我已经试着解决这个问题好几个小时了。我想我只需要把char*转换成temp。括号使它们在转换为char*之前进行计算。谢谢!是的,我在计算其他东西,而不是2。只是想简化我的问题。谢谢我只接受这个问题,所以这个问题被标记为已回答。