C++ 基础

C++ 主页 C++ 概述 C++ 环境设置 C++ 基本语法 C++ 注释 C++ Hello World C++ 省略命名空间 C++ 标记 C++ 常量/字面量 C++ 关键字 C++ 标识符 C++ 数据类型 C++ 数字数据类型 C++ 字符数据类型 C++ 布尔数据类型 C++ 变量类型 C++ 变量作用域 C++ 多变量 C++ 基本输入/输出 C++ 修饰符类型 C++ 存储类 C++ 数字 C++ 枚举 C++ 枚举类 C++ 引用 C++ 日期和时间

C++ 运算符

C++ 运算符 C++ 算术运算符 C++ 关系运算符 C++ 逻辑运算符 C++ 位运算符 C++ 赋值运算符 C++ sizeof 运算符 C++ 条件运算符 C++ 逗号运算符 C++ 成员运算符 C++ 强制类型转换运算符 C++ 指针运算符 C++ 运算符优先级 C++ 一元运算符

C++ 控制语句

C++ 决策语句 C++ if 语句 C++ if else 语句 C++ 嵌套 if 语句 C++ switch 语句 C++ 嵌套 switch语句 C++ 循环类型 C++ while 循环 C++ for 循环 C++ do while 循环 C++ Foreach 循环 C++ 嵌套循环 C++ break 语句 C++ continue 语句 C++ goto 语句

C++ 字符串

C++ 字符串 C++ 循环遍历字符串 C++ 字符串长度 C++ 字符串连接 C++ 字符串比较

C++ 函数

C++ 函数 C++ 多函数参数 C++ 递归函数 C++ 返回值 C++ 函数重载 C++ 函数重写 C++ 默认参数

C++ 数组

C++ 数组 C++ 多维数组 C++ 指向数组的指针 C++ 将数组传递给函数 C++ 从函数返回数组

C++ 结构 &联合

C++ 结构 C++ 联合

C++ 指针

C++ 指针 C++ 解引用 C++ 修改指针

C++ 类和对象

C++ 面向对象 C++ 类 &对象 C++ 类成员函数 C++ 类访问修饰符 C++ 静态类成员 C++ 静态数据成员 C++ 静态成员函数 C++ 内联函数 C++ this 指针 C++ 友元函数 C++ 指向类的指针

C++ 构造函数

C++ 构造函数 &析构函数 C++ 默认构造函数 C++ 参数化构造函数 C++ 复制构造函数 C++ 构造函数重载 C++ 带默认参数的构造函数 C++ 委托构造函数 C++ 构造函数初始化列表 C++ 使用构造函数动态初始化

C++ 继承

C++ 继承 C++ 多重继承 C++ 多级继承

C++ 面向对象

C++ 重载 C++ 多态性 C++ 抽象 C++ 封装 C++ 接口 C++ 虚函数 C++ 纯虚函数与抽象类

C++ 文件处理

C++ 文件和流 C++ 文件读取

C++ 进阶

C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 套接字编程 C++ 并发 C++ 高级概念 C++ Lambda 表达式 C++ unordered_multiset

C++ 实用资源

C++ 问答 C++ 快速指南 C++ 速查表 C++ STL 教程 C++ 标准库 C++ 实用资源 C++ 讨论


C++ 中的 return 语句

C++ 中的 return 语句用于退出函数并将值返回给函数的调用者,该值可根据需要选择使用。它在控制程序流程和确保函数将结果返回给代码的其他部分方面起着非常重要的作用。

语法

以下是 C++ 中使用 return 语句的语法 -

return [expression];

其中,"expression"是可选的,专门用于函数。如果提供,它指定要返回给调用者的值。

return 语句示例

以下是 return 语句的示例 -

#include <iostream>
using namespace std;

int sum(int a, int b){
   // 这里返回 a 和 b 的和
   return a + b;
}

int main(){
    // 调用函数
    int ans = sum(5, 2);
    cout << "The sum of two integers 5 and 2 is:  " << ans << endl;
    
    // 从 main() 返回,
    // 0 表示执行完成且无任何错误
    return 0;
}

输出

The sum of two integers 5 and 2 is:  7

return 语句的关键方面

1. 函数终止

执行 return 语句时,函数会立即退出,并可选地将值返回给调用者。

2. 返回类型

按值返回

在这种情况下,return 语句中指定的值将返回给调用者。这对于执行计算或需要提供结果的函数至关重要。

int Add(int a, int b) {
    return a + b; // 返回 a 与 b 之和
}

无返回值 (void)

对于使用 void 声明的函数,可以使用 return 语句(无需表达式)提前退出函数。

void GetMessage() {
    cout << "Hello, TutorialsPoint Learner!";
    return; // 退出函数
}

3. 多个 return 语句

一个函数可能包含多个 return 语句,我们通常在条件语句中看到它们。

int max(int a, int b) {
   if (a > b)
      return a;
   else
      return b;
}

4. 返回对象

函数可以返回对象,这对于返回封装在类或结构体中的多个值非常有用。

struct point {
    int x, y;
};

point getOrigin() {
    return {0, 0};
}

5. 提前退出

return 语句可用于提前退出函数,这对于错误处理或特殊情况非常有用。

int divideInteger(int a, int b) {
   if (b == 0) {
      cer << "Error: Division by zero!" << endl;
      return -1; // Shows an error
   }
   return a / b;
}

C++ 中的返回类型和值处理

在 C++ 中,函数的返回类型决定了函数将返回给调用者的值类型(如果有)。正确处理返回类型和值对于确保函数按预期运行并与程序的其他部分顺利集成至关重要。

1. 原始数据类型

原始数据类型是 C++ 提供的基本内置类型。常见示例包括 int、float、double、char 等。

示例

#include <iostream>
using namespace std;
// 创建了一个返回整数的函数
int getSquare(int num) {
   return num * num;
}
int main() {
   int value = 5;
   int result = getSquare(value); // 调用函数并存储其结果
   cout << "The square of " << value << " is " << result << endl;
   return 0;
}
输出
The square of 5 is 25

2. 用户定义类型

用户定义类型包括结构体。这些类型允许您定义复杂的数据结构,并根据您的特定需求进行自定义。

结构体示例

#include <iostream>
using namespace std;
struct Point {
   int x;
   int y;
};
Point createPoint(int x, int y) {
   Point p;
   p.x = x;
   p.y = y;
   return p; // 将返回一个 Point 对象
}
int main() {
   Point p = createPoint(10, 20);
   cout << "Point coordinates: (" << p.x << ", " << p.y << ")" << endl;
   return 0;
}
输出
Point coordinates: (10, 20)

带类的示例

#include <iostream>
using namespace std;

class rectangle {
   public:
      rectangle(int w, int h) : width(w), height(h) {}
      int getArea() const {
         return width * height;
      }
   private:
      int width;
      int height;
};

rectangle createRectangle(int width, int height) {
   return rectangle(width, height); // 返回一个矩形对象
}

int main() {
   rectangle rect = createRectangle(10, 5);
   cout << "Area of given Rectangle is: " << rect.getArea() << endl;
   return 0;
}
输出
Area of given Rectangle is: 50

3. 引用和指针

引用指针用于引用变量或对象,而无需进行任何复制。这有助于提高效率,并在需要时轻松修改原始数据。

通过引用返回

#include <iostream>
using namespace std;
int globalValue = 100;

int& getGlobalValue() {
   return globalValue; // 返回对全局变量的引用
}

int main() {
   int& ref = getGlobalValue();
   ref = 200; // 修改全局变量
   cout << "Global Value: " << globalValue << endl; 
   return 0;
}
输出
Global Value: 200

通过指针返回

#include <iostream>
using namespace std;
int* createArray(int size) {
   int* array = new int[size]; // 动态分配内存
   for (int i = 0; i < size; ++i) {
      array[i] = i * 10;
   }
   return array; // 返回指向已分配数组的指针
}

int main() {
   int* myArray = createArray(5);
   for (int i = 0; i < 5; ++i) {
      cout << myArray[i] << " ";
   }
   delete[] myArray; // 释放动态分配的内存
   return 0;
}
输出
0 10 20 30 40