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语言练习题的书籍吗,不用介绍基础知识,单纯习题加解析。谢谢大神们了!! 展开
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语言练习题的书籍吗,不用介绍基础知识,单纯习题加解析。谢谢大神们了!! 展开
2个回答
展开全部
没有return NULL是因为在构造链表的时候给最后一项的next指针赋值为NULL了。(比如可能有List *Insert()函数这样的。
所以在while循环时,当p=p->next=NULL时,再次while判断就不成立,return p即为return NULL了。
第二个问题:
当函数为void fun()时,即无需返回值时,可以写一个return ;表示函数结束。
第三个问题:
练习题书籍应该挺多的,本人没怎么做过,一般教科书都带有习题,可做练习。
所以在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类型。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询