return 的核心作用有两个:

- 终止函数:立即结束当前函数的执行,程序流程返回到调用该函数的地方。
- 返回值:将一个值从被调用的函数“带回”到调用它的地方。
详细解释
return 是 C 语言中一个至关重要的关键字,它只能在函数内部使用,它的行为根据函数是否声明了返回类型而有所不同。
终止函数
这是 return 最基本的功能,当代码执行到 return 语句时,函数体内的所有后续代码都将被忽略,函数会立即退出。
示例:
#include <stdio.h>
void say_hello_and_exit() {
printf("Hello, world!\n");
printf("This line will be printed.\n");
return; // 函数执行到这里会立即终止
printf("This line will NEVER be printed.\n"); // 死代码
}
int main() {
say_hello_and_exit();
printf("Function has returned.\n");
return 0;
}
输出:

Hello, world!
This line will be printed.
Function has returned.
可以看到,say_hello_and_exit 函数在执行到 return; 后就结束了,后面的 printf 语句根本没有被执行。
返回值
这是 return 更重要的功能,它允许函数将计算结果传递给调用者。
返回一个值(用于有返回值的函数)
如果一个函数在声明时指定了返回类型(int, float, char* 等),那么它必须使用 return 语句来返回一个与该类型匹配的值。
语法:
return expression;
expression 可以是一个常量、变量、计算结果或任何能产生一个值的表达式。

示例:
#include <stdio.h>
// 这个函数计算两个整数的和,并返回结果
// 函数声明 int add(int, int); 指定了它必须返回一个 int 类型的值
int add(int a, int b) {
int sum = a + b;
return sum; // 将 sum 的值返回
}
int main() {
int result = add(5, 3); // 调用 add 函数,并将返回的值赋给 result 变量
printf("The sum is: %d\n", result); // 输出 The sum is: 8
return 0;
}
流程解析:
main函数调用add(5, 3)。- 程序跳转到
add函数,a被赋值为 5,b被赋值为 3。 add函数计算sum = 5 + 3,sum的值为 8。return sum;语句执行,将值8从add函数中带出。add函数终止,程序流返回到main函数中add(5, 3)的位置。- 被带回的值
8被赋给了main函数中的result变量。 main函数继续执行,打印出result的值。
不返回值(用于无返回值的函数)
如果一个函数的返回类型被声明为 void,意味着它不需要向调用者返回任何值,这种函数的 return 语句是可选的,并且不带任何值。
语法:
return;
如果省略 return 语句,当函数执行完最后一条语句后,也会自动返回。
示例:
#include <stdio.h>
// 这个函数只负责打印信息,不需要返回任何值
// 函数声明 void print_message(); 指定了它返回 void (无类型)
void print_message() {
printf("This is a message from a void function.\n");
// 可以在这里写 return;,但也可以不写,函数执行到这里会自动结束
return; // 这是合法的,但没有必要
}
int main() {
print_message(); // 调用这个函数,但不接收任何返回值
printf("Function has finished its job.\n");
return 0;
}
输出:
This is a message from a void function.
Function has finished its job.
特殊情况:main 函数的 return
main 函数是一个特殊的函数,它是程序的入口点,当 main 函数执行 return 语句时,它不仅会终止自身,还会将一个值返回给操作系统,这个值被称为“程序退出状态码”(Exit Status)。
return 0;:通常表示程序成功执行并正常退出,这是最常见的情况。return non_zero_value;:通常表示程序在执行过程中遇到了错误或异常情况而退出,这个非零值可以被其他脚本或程序用来判断该程序是否成功运行。
示例:
#include <stdio.h>
int main() {
printf("Program is running...\n");
// 模拟一个成功的情况
return 0; // 告诉操作系统:程序成功结束
}
在命令行中运行这个程序后,你可以通过 echo $? (在 Linux/macOS) 或 %ERRORLEVEL% (在 Windows) 来查看上一个程序退出的状态码,它会显示 0。
return vs printf
初学者常常混淆 return 和 printf 的作用。
printf:它的作用是输出数据到标准输出(通常是你的终端屏幕),它只是把数据显示出来,并不会把数据“返回”给调用它的函数。return:它的作用是返回数据给调用它的函数,这个数据是“背地里”传递的,用户在屏幕上看不到这个返回值本身(除非调用者像main函数里那样把它用printf打印出来)。
示例对比:
#include <stdio.h>
// 这个函数打印了 "Hello",但没有返回值
void print_hello() {
printf("Hello"); // 输出到屏幕
// return; // 隐式返回
}
// 这个函数返回字符串 "Hello",但屏幕上什么都不会打印
const char* return_hello() {
return "Hello"; // 返回给调用者
}
int main() {
print_hello(); // 屏幕上会显示 "Hello"
printf("\n");
const char* message = return_hello(); // 获取返回的值
printf("The returned message is: %s\n", message); // 再把获取到的值打印出来
// 屏幕上会显示 "The returned message is: Hello"
return 0;
}
总结表格
| 特性 | 描述 |
|---|---|
| 作用 | 终止当前函数的执行。 将一个值从函数返回给调用者。 |
| 使用位置 | 只能在函数内部使用。 |
| 语法 | return expression; (用于有返回值的函数)return; (用于 void 函数,可省略) |
| 与函数类型关系 | - 如果函数声明有返回类型 (如 int, char*),return 后必须跟一个匹配类型的值。- 如果函数声明为 void,return 语句是可选的,且不能带值。 |
与 printf 的区别 |
printf 将数据输出到屏幕,return 将数据返回给调用函数。 |
在 main 函数中的特殊意义 |
return 的值会作为程序的退出状态码返回给操作系统,0 通常表示成功。 |
掌握 return 是理解 C 语言函数工作方式的关键一步,希望这个解释能帮助你彻底理解它!
