【发布时间】:2012-05-23 19:23:20
【问题描述】:
我正在尝试实现一个通用链表。节点的结构如下 -
typedef struct node{
void *data;
node *next;
};
现在,当我尝试为数据分配地址时,例如假设为 int,例如 -
int n1=6;
node *temp;
temp = (node*)malloc(sizeof(node));
temp->data=&n1;
如何从节点获取 n1 的值?如果我说-
cout<<(*(temp->data));
我明白了-
`void*' is not a pointer-to-object type
当我为它分配一个 int 地址时,void 指针不会被强制转换为 int 指针类型吗?
【问题讨论】:
-
为什么在 C++ 程序中使用 malloc 和 C 风格的指针?
-
如果这不是练习,请停止重新发明轮子并使用例如glib中提供的链表
-
@PaulRL OP 在他的问题标题中提到 C 作为实现语言。
-
我们可以请不要在这里问 cout/printf 吗?这只是关于取消引用 void 指针,是的,它是一个练习。
-
@DavidHeffernan:是的。这就是当时应该指出的。在 C++ 中使用
malloc就可以了。这种在 C++ 中看不起malloc和free的趋势已经成为一种我不同意的风格声明。
标签: c++ c pointers linked-list