在C中构造字段分配

时间:2016-08-14 11:26:35

标签: c struct

我有一行MyLinkedList.h文件:

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是红色的。 我做错了什么?

1 个答案:

答案 0 :(得分:3)

您有两个错误:

  • MyLinkedListP已经是指针,因此MyLinkedListP *list是指向指针的指针。
  • 您使用->而不是.来从指针访问struct字段。

以下是修复代码的方法:

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