我有一个带有以下行的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是红色的。
我究竟做错了什么?

最佳答案

您有两个错误:


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


这是修复代码的方法:

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

关于c - C中的结构字段分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38941754/

10-11 16:56