不能將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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM