return 是 C 语言中一个非常重要且基础的关键字,它的核心作用是终止当前函数的执行,并将控制权返回给调用该函数的地方。

(图片来源网络,侵删)
return 的主要作用
- 终止函数执行:当程序执行到
return语句时,当前函数会立即停止,函数体中return语句之后的代码将不会被执行。 - 返回值:
return可以将一个值(或一个变量)从函数“带”回给调用者,这使得函数能够进行计算并返回结果,极大地增强了代码的模块化和复用性。
return 的两种基本用法
无返回值的 return
当函数不需要向调用者返回任何数据时,可以使用这种形式,这通常用于执行特定操作(如打印、修改全局变量等)的函数。
语法:
return;
关键点:
- 这种函数的返回类型必须是
void。 return;语句是可选的。void类型的函数执行到末尾没有遇到return,它也会自动返回。
示例:

(图片来源网络,侵删)
#include <stdio.h>
// 这个函数只负责打印信息,不返回任何值
void printWelcomeMessage() {
printf("欢迎使用我们的程序!\n");
// 执行到这里,函数会自动结束并返回
// 也可以显式地写 return;
// return;
}
int main() {
printWelcomeMessage(); // 调用函数
printf("程序继续执行...\n");
return 0;
}
带返回值的 return
当函数需要计算并返回一个结果时,必须使用这种形式。
语法:
return 表达式;
关键点:
- 函数的返回类型(在函数声明/定义时指定的类型)必须与
return语句中表达式的类型兼容(或者可以自动转换)。 - 调用者通常需要用一个变量来接收这个返回值。
示例:

(图片来源网络,侵删)
#include <stdio.h>
// 这个函数计算两个整数的和,并返回结果
// 返回类型是 int
int add(int a, int b) {
int sum = a + b;
return sum; // 返回计算出的和
}
int main() {
int result = add(5, 3); // 调用 add 函数,并用 result 接收返回值
printf("5 + 3 = %d\n", result); // 输出: 5 + 3 = 8
return 0;
}
return 的详细规则和注意事项
函数返回类型与 return 值的类型匹配
函数定义时声明的返回类型,决定了它必须返回什么类型的数据。
- 匹配:如果函数声明为
int,就应该返回一个int类型的值。 - 自动转换:如果返回值的类型与函数声明不完全匹配,但可以自动转换(函数返回
int,但你返回一个char),C 编译器会进行隐式类型转换,但这通常不是个好习惯,可能会丢失精度。 - 错误:如果函数声明返回一个非
void类型,但在函数中没有return语句,或者return后面没有跟值,这是编译错误。
// 错误示例
int getNumber() {
printf("这是一个错误,函数声明返回 int,但没有返回值\n");
// 编译器会报错:control reaches end of non-void function
}
void 函数中的 return
void 函数可以有 return; 语句,用于在函数中间提前退出,如果函数执行到末尾,也会自动返回。
#include <stdio.h>
void checkAge(int age) {
if (age < 0) {
printf("年龄无效!\n");
return; // 提前结束函数
}
printf("您的年龄是: %d\n", age);
}
int main() {
checkAge(25); // 输出: 您的年龄是: 25
checkAge(-5); // 输出: 年龄无效!
return 0;
}
提前返回
return 语句可以在函数的任何位置出现,这使得“提前返回”成为一种常见的编程模式,可以简化代码逻辑,避免过深的嵌套。
不推荐(嵌套过深):
void process(int value) {
if (value > 0) {
if (value < 100) {
if (value % 2 == 0) {
printf("处理偶数...\n");
} else {
printf("处理奇数...\n");
}
} else {
printf("数值过大\n");
}
} else {
printf("数值非正\n");
}
}
推荐(提前返回,逻辑清晰):
void process(int value) {
if (value <= 0) {
printf("数值非正\n");
return; // 提前返回
}
if (value >= 100) {
printf("数值过大\n");
return; // 提前返回
}
// 能执行到这里,说明 value 在 1 到 99 之间
if (value % 2 == 0) {
printf("处理偶数...\n");
} else {
printf("处理奇数...\n");
}
}
main 函数中的 return
main 函数是程序的入口,它的 return 语句有一个特殊用途:向操作系统返回程序的退出状态。
return 0;:通常表示程序成功执行完毕,没有发生错误。return 非0值;:通常表示程序在执行过程中遇到了错误或异常,非0值具体代表什么错误,需要由程序员约定或查阅系统文档。
#include <stdio.h>
int main() {
printf("程序开始运行...\n");
// ... 一些代码 ...
printf("程序成功结束,\n");
return 0; // 通知操作系统,程序正常退出
}
总结表格
| 用法场景 | 语法 | 函数返回类型 | 示例 |
|---|---|---|---|
| 无返回值 | return; |
必须是 void |
void func() { printf("hello"); return; } |
| 返回值 | return 表达式; |
任意基本或复合类型 | int add(int a, int b) { return a + b; } |
| 提前退出 | return; 或 return 值; |
void 或非 void |
void check(int x) { if (x < 0) return; } |
main 函数 |
return 0; |
通常是 int |
int main() { return 0; } |
掌握 return 语句是编写正确、高效 C 语言代码的基础,它不仅是函数返回数据的工具,更是控制程序流程的重要手段。
