C语言中return的作用是什么?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 C语言 正文

return 的核心作用有两个:

return c语言中的意思
(图片来源网络,侵删)
  1. 终止函数:立即结束当前函数的执行,程序流程返回到调用该函数的地方。
  2. 返回值:将一个值从被调用的函数“带回”到调用它的地方。

详细解释

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;
}

输出:

return c语言中的意思
(图片来源网络,侵删)
Hello, world!
This line will be printed.
Function has returned.

可以看到,say_hello_and_exit 函数在执行到 return; 后就结束了,后面的 printf 语句根本没有被执行。


返回值

这是 return 更重要的功能,它允许函数将计算结果传递给调用者。

返回一个值(用于有返回值的函数)

如果一个函数在声明时指定了返回类型(int, float, char* 等),那么它必须使用 return 语句来返回一个与该类型匹配的值。

语法: return expression; expression 可以是一个常量、变量、计算结果或任何能产生一个值的表达式。

return c语言中的意思
(图片来源网络,侵删)

示例:

#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;
}

流程解析:

  1. main 函数调用 add(5, 3)
  2. 程序跳转到 add 函数,a 被赋值为 5,b 被赋值为 3。
  3. add 函数计算 sum = 5 + 3sum 的值为 8。
  4. return sum; 语句执行,将值 8add 函数中带出。
  5. add 函数终止,程序流返回到 main 函数中 add(5, 3) 的位置。
  6. 被带回的值 8 被赋给了 main 函数中的 result 变量。
  7. 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

初学者常常混淆 returnprintf 的作用。

  • 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 后必须跟一个匹配类型的值。
- 如果函数声明为 voidreturn 语句是可选的,且不能带值。
printf 的区别 printf 将数据输出到屏幕,return 将数据返回给调用函数。
main 函数中的特殊意义 return 的值会作为程序的退出状态码返回给操作系统,0 通常表示成功。

掌握 return 是理解 C 语言函数工作方式的关键一步,希望这个解释能帮助你彻底理解它!

-- 展开阅读全文 --
头像
dede推荐h标签如何正确调用?
« 上一篇 02-16
dedecms织梦源码安全吗?存在漏洞吗?
下一篇 » 02-16
取消
微信二维码
支付宝二维码

目录[+]