return是C语言中的关键字,主要用于函数内部,核心作用是终止当前函数的执行流程,同时可以将函数内部计算得到的结果传递回函数的调用位置。它是连接函数内部逻辑和外部调用逻辑的重要桥梁,几乎所有有功能的C语言程序都会用到这个关键字。

return的基本含义
从功能层面拆分,return在C语言中有两层核心含义:
- 结束函数执行:当程序执行到函数内的return语句时,会立刻停止该函数后续代码的运行,跳出当前函数。
- 返回结果:如果函数的返回类型不是void,return后面可以跟随一个表达式,这个表达式的计算结果会作为函数的返回值,传递给调用该函数的代码位置。
不同函数类型下return的使用规则
非void类型函数的return使用
当函数声明时指定了具体的返回类型(比如int、float、char等),函数内部必须至少有一个return语句返回对应类型的值,否则程序会编译报错。返回值的类型需要和函数声明的返回类型兼容,否则会发生隐式类型转换。
下面是一个计算两个整数之和的函数示例:
#include <stdio.h>
// 函数声明,返回类型为int
int add(int a, int b) {
int sum = a + b;
// 返回sum作为函数结果
return sum;
}
int main() {
int result = add(3, 5);
printf("3和5的和是:%dn", result);
return 0;
}
void类型函数的return使用
void类型的函数表示没有返回值,这类函数内部可以使用不带返回值的return语句来提前结束函数,也可以省略return,函数会在执行完所有代码后自动结束。
示例代码如下:
#include <stdio.h>
// void类型函数,无返回值
void print_greeting(char* name) {
if (name == NULL) {
// 提前结束函数,不执行后续打印
return;
}
printf("你好,%sn", name);
}
int main() {
print_greeting("张三");
print_greeting(NULL);
return 0;
}
return使用的常见注意事项
- return语句后面如果跟表达式,表达式的类型需要和函数声明的返回类型匹配,否则可能出现数据精度丢失的问题,比如函数返回类型是int,return后面跟一个float值,小数部分会被截断。
- 一个函数内部可以有多个return语句,但是程序执行时只会触发其中一个,触发后函数立刻结束,后面的return不会被执行。
- main函数中的return返回值会作为程序的退出状态码,返回0通常表示程序正常结束,非0值表示程序出现异常退出,这个返回值可以被操作系统或者其他调用该程序的进程捕获。
return和exit的区别
很多新手会混淆return和exit的作用,二者核心区别是:return是关键字,用于结束当前函数的执行,只在被调用的函数内生效;exit是标准库函数,调用后会直接终止整个程序的运行,不管exit在哪个函数内被调用,都会导致程序立刻退出。
示例对比:
#include <stdio.h>
#include <stdlib.h>
void test_func() {
printf("进入test_func函数n");
// exit会直接终止整个程序,后面的main函数代码不会执行
exit(1);
printf("test_func函数后续代码n");
}
int main() {
test_func();
printf("main函数后续代码n");
return 0;
}
上面的代码中,调用exit(1)之后,程序直接退出,不会执行test_func里return后面的代码,也不会执行main函数里test_func调用之后的代码。