【问题标题】:Casting char* to a linked list将 char* 转换为链表
【发布时间】: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


【解决方案1】:

正如托马斯·巴丹所说 (节点*)((char*)(tmp + 2));应该做你解释的事情,因为 tmp + 2 在 tmp 数据的大小(sizeof(Node))上向前移动了两步。但是你用指针尝试的东西似乎很模糊。

【讨论】:

  • 是的,我在计算其他一些东西,而不仅仅是 2。只是想简化我的问题。谢谢。我会接受这个,所以这个问题被标记为已回答。
猜你喜欢
  • 2021-04-29
  • 2013-10-18
  • 2012-01-15
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2010-10-12
  • 2012-07-01
相关资源
最近更新 更多