【发布时间】:2014-09-11 02:05:07
【问题描述】:
好的,所以我在这里写关于指针的工作,我不确定这段代码是如何工作的。
typedef struct linkedlist {
void *obj;
struct linkedlist *next;
} linkedlist;
linkedlist *p;
//some code here
int *newpointer = (*(int *)(p->next)->obj); //code chunk in question
如果我需要对 p->next 指向的结构中的 void 指针 'obj' 进行类型转换(假设它已经存在)并将其复制到 'newpointer' int 指针,我这样做对吗?
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。您是否咨询过您的编译器是否适合您所做的工作?你的调试器呢?为什么要存储
void *而不是int *?为什么要用 C 和 C++ 对它进行双重标记?这看起来更像 C 代码而不是 C++,因为 C++ 确实不需要typedef。将int分配给int *应该会生成编译警告。 -
你好乔恩,我刚刚阅读了关于页面。我看到我在那里做了什么。只是我有一个链接列表,其中包含指向任何数据类型所需的元素。这意味着我必须使用 void 指针来进行简单的类型转换。我知道 void 类型转换很糟糕。只是设计规范是这样的。我还在掌握调试器。以后会更加勤奋。
-
有时,无论好坏,都会给出设计。请记住不要使用 C 和 C++ 双重标记。除此之外,如果你学会了,那很好;这就是我们来这里的目的。
标签: c