函数无返回值(void)的情况下,是否一定写return语句?
答:可以写也可以不写。
1.如果不写return语句,函数将执行完函数体的最后一个语句后自动退出。
#include <stdio.h>
void testfun()
{
printf("正在执行该函数内语句\n");
printf("你\n");
printf("好\n");
}
int main(){
printf("下面将调用函数:testfun\n");
testfun();
printf("testfun函数执行完毕,已回到主函数\n");
return 0;
}
执行结果:
下面将调用函数:testfun
正在执行该函数内语句
你
好
testfun函数执行完毕,已回到主函数
2.如果写return语句,函数将在执行return语句时—退出。
#include <stdio.h>
void testfun()
{
printf("正在执行该函数内语句\n");
return;
printf("你\n");
printf("好\n");
}
int main(){
printf("下面将调用函数:testfun\n");
testfun();
printf("testfun函数执行完毕,已回到主函数\n");
return 0;
}
执行结果:
下面将调用函数:testfun
正在执行该函数内语句
testfun函数执行完毕,已回到主函数
可以看出,上述代码中,没有输出"你"和"好",因为在他们之前便已经存在return语句,程序执行return后便退出了函数。
上面void函数中的return后是不带参数的,只有 return;
但是,有返回值类型的函数,return后不带参数么会怎样?
答:我使用的是最常用的GNU编译器,程序可以执行,但是发出了警告(warning)。所以如果考试中判断对错,那么应该是属于错的。
#include <stdio.h>
int testfun() //函数返回值类型为int
{
printf("正在执行该函数内语句\n");
return; //不返回数据。
printf("你\n");
printf("好\n");
}
int main(){
printf("下面将调用函数:testfun\n");
int i = testfun();
printf("testfun函数执行完毕,已回到主函数\n");
return 0;
}
执行结果:
test.c: In function 'testfun':
test.c:6:5: warning: 'return' with no value, in function returning non-void
return;
^~~~~~
test.c:3:5: note: declared here
int testfun()
^~~~~~~
下面将调用函数:testfun
正在执行该函数内语句
testfun函数执行完毕,已回到主函数