今天用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 *"这里 笔者取栈顶元素时,使用如下内容,
报错
。