不能将X*类型的值分配到X*类型的实体问题的解决方法

不能将X类型的值分配到X类型的实体问题的解决方法

今天在学习链表的过程中遇到了这个问题,我用如下方法定义了一个结构体,然后这个函数想要在链表头插入一个节点。但是在函数的最后一行却出现了报错:不能将MyLinkedList * 类型的值分配到MyLinkedList * 类型的实体。

    typedef struct {
	    int val;
	    MyLinkedList* next;
    } MyLinkedList;

    void myLinkedListAddAtHead(MyLinkedList* obj, int val) {
	MyLinkedList* Temp;
	MyLinkedList* Node = (MyLinkedList*)malloc(sizeof(MyLinkedList));
	if (Node == NULL) {
		printf("Out of space!");
	}
	else {
		Node->val = val;
		Temp = obj;
		obj = Node;
		Node = Temp;
		obj->next = Node;//这一行赋值时报错
	    }
    }

经过一番百度和试验,发现问题出在结构体的定义上。因为结构体中的MyLinkedList指针先于MyLinkdList结构体出现,所以会发生编译器不认识的情况。特别是vs的语法高亮还十分迷惑,让你误以为这里没有问题(这应该是C++而不是C的写法)。于是改正后的代码如下:

    typedef struct MyLinkedList{
	    int val;
	    MyLinkedList* next;
    } MyLinkedList;
  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值