【发布时间】:2013-05-16 03:10:31
【问题描述】:
我的链表:
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 bytes tmp + 2 = 24 个字节。
因为我正在向它投射 char*,所以我希望它从 tmp 开始移动 2 个字节。
我哪里错了?
谢谢。
【问题讨论】:
-
你试过 tmp->next = (Node*)((char*)tmp + 2);我只是去掉了父代。
-
你为什么要这样做?
Node*应该指向一个整体Node,而不是它的一部分。 -
@Tomás Badan 天哪,我已经尝试解决这个问题好几个小时了。我想我只需要将 char* 转换为 temp。括号使它们在转换为 char* 之前进行计算。非常感谢!
标签: c++ casting linked-list byte nodes