今天用vs2013练习C语言,链表创建输出。但是碰到一个问题error:c2223 “->next”的左侧必须指向结构/联合。我想了一上午都没想明白,到开源中国和吾爱发完求助帖准备先睡一觉。突然试了编译一下,没有错误了。先上源代码。

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#define flag -1

typedef struct LNode

int data;

struct LNode *next;

}LNode;

int CreateLinkList(LNode **L)

if (L == NULL)

return -1;

int x;

LNode *s = NULL;

scanf("%d", &x);

while (x != flag)

s = (LNode *)malloc(sizeof(LNode));

s->data = x;

s->next = *L->next;

*L->next = s;

scanf("%d", &x);

return 0;

int PrintLinkList(LNode **L)

if (L == NULL)

return -1;

LNode *p = *L->next;

while (p != NULL)

printf("%d---", p->data);

p = p->next;

return 0;

int main()

LNode *L;

L = (LNode *)malloc(sizeof(LNode));

L->next = NULL;

CreateLinkList(&L);

PrintLinkList(&L);

return 0;

编译器报错信息:

这个问题原因是操作符优先级的问题。->操作符优先级高于*操作符优先级,所以上面源代码需要把

L->next换成(*L)->next,问题就全部解决了。

请考虑VC++ 2010中的以下C代码,用于在 C语言 中创建BST。通过在VC++项目中创建win32控制台应用程序。C++ malloc代码中的VC++ 2010 错误 #include #include #include #include typedef struct BSTNode{char *data;struct BSTNode *left,*right;}Node;Node *createN... error C2371: 'tDatabase' : redefinition; different basic typesdb.h(7) : see declaration of 'tDatabase' error C2223 : left of '->numberOfCity' must point to struct/union error C2198: 'calloc' : too few... 该楼层疑似违规已被系统折叠隐藏此楼查看此楼vs2012 编译 错误 提示1>d:\ c语言 练习\consoleapplication1\consoleapplication1\创建单 链表 .c(33): error C2275: “PNODE”: 将此类型用作表达式非法1> d:\ c语言 练习\consoleapplication1\consoleapplication1\... 原因是因为next是 结构 体LinkStack类型里的指针成员, 指向 结构 体LinkStack类型,不能对它用圆点运算符。因此应用S.next->data。表达式 必须 具有 结构 联合 类型,但它具有类型 "struct Node *"这里 笔者取栈顶元素时,使用如下内容, 报错