2016-08-14 77 views
-1

我有这个线MyLinkedList.h文件:的Structs字段赋值用C

typedef struct _MyLinkedList *MyLinkedListP; 

而在我的.c文件,我尝试这一点,它不会工作。

#include "MyLinkedList.h" 

typedef struct _Node 
{ 
    int _val; 
    struct _Node* next; 
} Node; 

typedef struct _MyLinkedList 
{ 
    int _listSize; 
    Node* _firstNode; 
}; 

MyLinkedListP createList() 
{ 
    MyLinkedListP *list = (MyLinkedListP*)malloc(sizeof(MyLinkedListP)); 
    list._listSize = 0; 
    list._firstNode = NULL; 
} 

._listSize和._firstNode是红色的。 我在做什么错?

回答

3

你有两个错误:

  • MyLinkedListP已经是一个指针,所以MyLinkedListP *list是一个指针的指针。
  • 您使用->而不是.从指针访问struct字段。

这里是如何解决你的代码:

MyLinkedListP list = malloc(sizeof(struct _MyLinkedList)); 
//   ^ ^
// No asterisk  No cast   
list->_listSize = 0; 
list->_firstNode = NULL; 
+0

@chqrlie你说得对,我错过了sizeof'的'的说法。谢谢! – dasblinkenlight

+0

非常感谢! – Vipasana