请问这个return(head)是什么意思

加哥 2012-03-10 11:22:31
struct zhuce *creat(struct zhuce *head)
{ struct zhuce * p1 , * p2;
int m=0,i=0,j=0,k=0;
char a[10]={'\0'},b[10]={'\0'},c[10]={'\0'},ch;
p1=(struct zhuce * )malloc(LEN);
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║用║║户║║注║║册║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t请输入用户名:");
scanf("%s",&p1->name);
p2=head;
if(head!=NULL)
while(p2!=NULL)
{ if(strcmp(p2->name,p1->name)==0) {printf("\n\t\t该用户名已被注册");m=1;break;}
p2=p2->next;
}
if(m==1) {printf("\n\t\t请重新输入用户名:");scanf("%s",&p1->name);return(head);}
就是这最后一行,谢谢帮忙
...全文
1117 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪头小哥 2012-03-10
  • 打赏
  • 举报
回复
返回头指针~~
加哥 2012-03-10
  • 打赏
  • 举报
回复
整个函数如下
struct zhuce *creat(struct zhuce *head)
{ struct zhuce * p1 , * p2;
int m=0,i=0,j=0,k=0;
char a[10]={'\0'},b[10]={'\0'},c[10]={'\0'},ch;
p1=(struct zhuce * )malloc(LEN);
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║用║║户║║注║║册║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t请输入用户名:");
scanf("%s",&p1->name);
p2=head;
if(head!=NULL)
while(p2!=NULL)
{ if(strcmp(p2->name,p1->name)==0) {printf("\n\t\t该用户名已被注册");m=1;break;}
p2=p2->next;
}
if(m==1) {printf("\n\t\t请重新输入用户名:");scanf("%s",&p1->name);return(head);}

printf("\t\t请输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
printf("\n\t\t请再次输入密码确认:");
fflush(stdin);
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(b,c)!=0)
while(strcmp(b,c)!=0)
{printf("\n\t\t密码输入有误,请再次输入");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
}
strcpy(p1->mima,b);
printf("\n\t\t请输入身份(家长为1,其他成员为2):");
scanf("%c",&p1->sf);
fflush(stdin);
while(p1->sf!='1'&&p1->sf!='2')
{ printf("\n\t\t输入有误,请按提示输入");
scanf("%c",&p1->sf);
fflush(stdin);
}
printf("\t\t请输入密码找回问题:");
scanf("%s",&p1->wenti);
fflush(stdin);
printf("\t\t请输入问题答案:");
scanf("%s",&p1->daan);
fflush(stdin);
if(head!=NULL) head=sort2(head);
p2=head;
if(head==NULL)
p1->num=1;
else
{while(p2!=NULL)
{ p1->num=p2->num;p2=p2->next;}
p1->num++;}
fflush(stdin);
p1->tiao=0;
p1->next=NULL;
p1->tong=0;
p1->head2=shuru1(p1);
if(head==NULL)
head=p1;
else head=insert1(head,p1);
printf("\n\t\t注册成功");
Sleep(1000);
system("cls");
return(head);
}
加哥 2012-03-10
  • 打赏
  • 举报
回复
如果是,那注册不是还没结束
加哥 2012-03-10
  • 打赏
  • 举报
回复
那return(head)是不是函数结束了
xuzhaohua38 2012-03-10
  • 打赏
  • 举报
回复
返回的是一个链表的头指针
面包大师 2012-03-10
  • 打赏
  • 举报
回复
这个是个链表,你return(head)是将头结点返回,那么就相当于把整个链表返回了,看楼主问的这个问题,感觉你对链表相当不熟啊。。。多看看书
菜的抠脚弟弟 2012-03-10
  • 打赏
  • 举报
回复
此时head定义为指针,return(head)意为返回p2
加哥 2012-03-10
  • 打赏
  • 举报
回复
哦,对了,这个函数还没结束,后面还有很多
oldm4n 2012-03-10
  • 打赏
  • 举报
回复
head 是 creat 函数的入参,即调用creat函数时传入了一个链表的节点指针(可能是头节点,不然起名叫head就有点儿狗血了),当链表操作结束后,再将传入的这个节点指针返回(有点儿画蛇添足)

是的,rerun 语句就是退出当前函数了
[Quote=引用 14 楼 ye18825166260 的回复:]

那是不是到了这里就跳出了函数
[/Quote]
加哥 2012-03-10
  • 打赏
  • 举报
回复
那是不是到了这里就跳出了函数
wizard_tiger 2012-03-10
  • 打赏
  • 举报
回复
返回一个链表的头结点。
矫情狗_____ 2012-03-10
  • 打赏
  • 举报
回复
head是链表的头结点,它存放的不是数据,而是链表的第一个地址,也就是链表的第一个内容的地址.而链表中,没部分都有一个地址...也就是存放下一个内容的地址...所以只要找到head地址,就能把链表中所有内容全部都打印出来.而结束的位置,在你创建中会存入一个NULL数值.表示链表结束!
加哥 2012-03-10
  • 打赏
  • 举报
回复
对对对,我自己就是这么想,但不理解这里怎么能回去
lh1342988550 2012-03-10
  • 打赏
  • 举报
回复
从你的代码来看,你提问的位置是要接着执行客户用户名的输入,需要返回前面去操作大哥比方就是:比如一辆车去飞机场接人,结果接到的人不符合要求,于是这辆车需要回到飞机场重新去接人,这里的head差不多就是车的作用了...有说的不多的地方各位大神多指教O(∩_∩)O~
lh1342988550 2012-03-10
  • 打赏
  • 举报
回复
同意楼上的说法

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧