代码:

#include<stdio.h>
#include<malloc.h>
#include<conio.h>

typedef struct singlylist *nodeptr;
typedef struct singlylist *position;

struct singlylist
{
  int x;
  position next;
}

.
typedef struct singlylist List;
List L;

int isempty(List A)
{
 return(A.next==NULL);
}

void create()
{
 L=(struct singlylist)malloc(sizeof(struct singlylist));
 L.next=NULL;
}

main()
{
 create();
 if(isempty(L))
 puts("Empty list !!!");
 getch();
}

错误:
无法从void*强制转换为singlylist。
问题:
我想不出错误背后的原因。有人能解释一下是什么错误吗?

最佳答案

malloc返回一个[void]指针,“struct singlylist”根本不是指针。
我对C有点生疏,但这应该管用:

typedef struct singlylist *List;

L = (List) malloc(sizeof(*L));

关于c++ - C强制转换失败:无法从void *强制转换为C结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18306444/

10-12 15:02