我是 C 的新手,现在我正在尝试用 3 个元素实现基本的通用链表,每个元素将包含不同的数据类型值-int
和.char
double
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
struct node
{
void* data;
struct node* next;
};
struct node* BuildOneTwoThree()
{
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;
head = (struct node*)malloc(sizeof(struct node));
second = (struct node*)malloc(sizeof(struct node));
third = (struct node*)malloc(sizeof(struct node));
head->data = (int*)malloc(sizeof(int));
(int*)(head->data) = 2;
head->next = second;
second->data = (char*)malloc(sizeof(char));
(char*)second->data = 'b';
second->next = third;
third->data = (double*)malloc(sizeof(double));
(double*)third->data = 5.6;
third->next = NULL;
return head;
}
int main(void)
{
struct node* lst = BuildOneTwoThree();
printf("%d\n", lst->data);
printf("%c\n", lst->next->data);
printf("%.2f\n", lst->next->next->data);
return 0;
}
我对前两个元素没有问题,但是当我尝试将 double 类型的值分配给第三个元素时,我得到一个错误:« can not convert from double
todouble *
»。
这个错误的原因是什么?为什么在int
or的情况下我不会得到相同的错误char
?还有最重要的问题:如何解决这个问题,如何为double
第三个元素的数据字段赋值?
问题字符串是« (double*)third->data = 5.6;
»。
谢谢。