【overcome error】dereferencing pointer to incomplete type
@
前言
这个问题是我在学习数据结构链栈部分遇到的,英文报错如题所示,中文意思是:取消引用不完整类型的指针,在百度一圈也没明白,(百度搜索,看一个和全看基本一样,因为内容都一样嘛)
解决
代码情况
//定义
typedef struct
{
ElemType data;
struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;
//读栈顶
/*
初始条件:链栈已存在,且至少有一个元素
*/
int StackTop(Linknode top, int* x)
{
if(top->data == 0)
return -1;
*x = top->next->data;
return 1;
}
分析问题
取消引用不完整类型的指针
这里的意思大概是有不完整的指针,结构体和指针都属于引用类型,而结构体内部定义是完整的,所以不完整的只有结构体本身,即:
//定义
//typedef struct 修改为:
typedef struct LinkedStackNode
{
ElemType data;
struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;
{
ElemType data;
struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;
//读栈顶
/*
初始条件:链栈已存在,且至少有一个元素
*/
int StackTop(Linknode top, int* x)
{
if(top->data == 0)
return -1;
*x = top->next->data;
return 1;
}
尾声
说这么多的目的并不是证明这个是我原创的,只是提供一种排除的思路。