在具有void返回类型的函数中,返回什么;声明给出? 例如,对于链表: -
void fun1(struct node* head)
{
if (head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}
链表的第一个节点是head。预期输出是所有节点的逆序。但是如何?
答案 0 :(得分:0)
return
函数的void
意味着该函数不会继续运行并且不会立即向其调用者返回任何内容,我们使用它来减少函数运行的时间,当我们别无他法。
在你的情况下,它是递归函数(一个自己调用的函数)。
http://en.wikipedia.org/wiki/Recursion
你有一个if
(作为停止条件)当你没有head
时会被激活
所以没有什么可做的,你就是"返回"跳过下一行只是退出该功能。
答案 1 :(得分:0)
如何?
if(head == NULL) return; // Leave if nothing left to do
fun1(head->next); // Process the next (later) element now with recursion
printf("%d ", head->data); // Print the current element
return;
只是结束它执行的函数,仅在返回类型为void
的函数中有效。