C语言:struct differs in levels of indirection from 'int ()'报错怎么处理

来源:百度知道 编辑:UC知道 时间:2024/06/11 02:22:53
struct engineerstruct
{
int number;//编号
char name[6];//姓名
int workyear;//工龄
int sexnum;//性别
int basic;//基本工资
int workday;//月工作天数
int education;//教育背景
double salary;//定义税后工资
struct engineerstruct *next;//指向下一结点首地址

};
struct engineerstruct *search(struct engineerstruct *head,int num)
{
struct engineerstruct *cur;//当前指针指向的结点

cur=head;

do
{
if(num==cur->number)
return cur;
else
cur=cur->next;
}while((cur->next==NULL)||(cur==Tail));

return NULL;

}

以上是我的部分代码,engineerstruct是全局的,编译后就提示如下错误:
1>j:\my work\engineer system\v0.07\engineer system.c(431) : error C2040: 'search' : 'engineerstruct *(engineerstruct *,int)' differs in levels of indirection from 'int ()'
提示的错误行是:struct engineerstruct *search(struct engineerstruct *head,int num),请问这是怎么造成的,如何处理,

没有看到其它代码,不知道错在哪里,不过以下代码编译没问题:
struct engineerstruct
{
int number;//编号
char name[6];//姓名
int workyear;//工龄
int sexnum;//性别
int basic;//基本工资
int workday;//月工作天数
int education;//教育背景
double salary;//定义税后工资
struct engineerstruct *next;//指向下一结点首地址

};

struct engineerstruct *Tail = NULL;
struct engineerstruct *search(struct engineerstruct *head,int num)
{
struct engineerstruct *cur;//当前指针指向的结点

cur=head;

do
{
if(num==cur->number)
return cur;
else
cur=cur->next;
}while((cur->next==NULL)||(cur==Tail));

return NULL;

}
还有,我觉得那个while语句很好问题,最好改成:
while(cur)

第一次回复错了~~看的不仔细~先删掉·~呆会再回复

貌似没什么大问题,就是Tail还没定义~然后估计错误是你调用的时候写错

可能是因为调用search之前没有声明search函数或声明不正确。