C语言关于return的问题

书上有一段代码:List*Find(ElementTypex,List*Ptrt){List*p=Ptrt;while(p!=NULL&&p->data!=x)p=p->... 书上有一段代码:
List *Find(ElementType x,List *Ptrt)
{
List *p=Ptrt;
while(p!=NULL&&p->data!=x)
p=p->next;
return p;
}
这一段是通过链表查找一个数,书上说若找不到那个数时返回空,但代码没有return NULL啊。
另一个问题是有时候一个函数最后只是写个return,不是应该return后面加一个数值吗,返回一个数值给主函数嘛,如果只写个return,那返回什么给主函数呢?
最后大神能推荐关于C语言练习题的书籍吗,不用介绍基础知识,单纯习题加解析。谢谢大神们了!!
展开
 我来答
wanglixin1001
推荐于2016-09-28 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:851万
展开全部
没有return NULL是因为在构造链表的时候给最后一项的next指针赋值为NULL了。(比如可能有List *Insert()函数这样的。
所以在while循环时,当p=p->next=NULL时,再次while判断就不成立,return p即为return NULL了。

第二个问题:
当函数为void fun()时,即无需返回值时,可以写一个return ;表示函数结束。

第三个问题:
练习题书籍应该挺多的,本人没怎么做过,一般教科书都带有习题,可做练习。
追问
那什么函数就没有返回值呢
追答
返回值是根据您自己的需要来确认的。
比如一个求和的函数:
int sum(int a, int b) { return a + b; }
这里就是求出两个参数的和,返回给调用者。所以有返回值类型int;
有些函数不需要返回值,如:
void print( int i) { printf("i = %d\n", i); }
这里这个函数我们只是用来打印一个值,不需要它返回什么有意义的值,那么就可以为void类型。
凌云小紫冥
2015-07-19 · TA获得超过310个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:267万
展开全部
  1. while(p!=NULL&&p->data!=x)  p=p->next; 这个循环就是当p == NULL 或者p->data ==x 才会停止。所以说 这个函数没有的时候就返回NULL。

  2. void fun() 类型的函数可以写 return; 不用返回任何值。

追问
问题解决了,那能推荐一些C语言的书籍吗
追答
C语言的练习册 最好去问你的C语言老师,没有人比他更了解了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式