C语言函数的return语句

903 阅读2分钟

函数无返回值(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函数执行完毕,已回到主函数