主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
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++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
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++ 程序至少有一个函数,即 main() 函数,并且最简单的程序也可以定义额外的函数。

你可以将你的代码分成不同的函数。如何将代码分割成不同的函数取决于你自己,但是逻辑上这种分割通常是使每个函数执行特定的任务。

函数声明告诉编译器函数的名字、返回类型和参数。函数定义提供函数的实际主体。

C++ 标准库提供了许多内置函数,你的程序可以调用它们。例如,函数 strcat() 用于连接两个字符串,函数 memcpy() 用于从一个内存位置复制到另一个位置等。

函数在不同的上下文中被称为方法、子程序或过程等等。

二、定义函数

C++ 函数定义的一般形式如下:

return_type function_name( parameter list ) {
   body of the function
}

C++ 函数定义由函数头和函数体组成。以下是函数的所有组成部分:

  • 返回类型:函数可能会返回一个值。return_type 是函数返回值的数据类型。有些函数执行所需的运算而不返回任何值,在这种情况下,返回类型是关键字 void。
  • 函数名称:这是函数的实际名称。函数名称和参数列表一起构成了函数签名。
  • 参数:参数就像是占位符。当函数被调用时,你传递一个值给参数。这个值被称为实际参数或参数。参数列表指的是函数的类型、顺序和数量。参数是可选的;也就是说,函数可以不包含任何参数。
  • 函数体:函数体包含一系列定义函数做什么的语句。

示例

以下是名为 max() 的函数的源代码。这个函数接受两个参数 num1 和 num2 并返回两者中的较大值:

// 返回两数中较大的函数
int max(int num1, int num2) {
   // 局部变量声明
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

三、函数声明

函数声明告诉编译器函数的名字和如何调用函数。函数的实际主体可以单独定义。

函数声明包含以下部分:

return_type function_name( parameter list );

对于上述定义的 max() 函数,下面是函数声明:

int max(int num1, int num2);

参数名称在函数声明中并不重要,只需要它们的类型即可,所以以下也是一个有效的声明:

int max(int, int);

当你在一个源文件中定义了一个函数,并在另一个文件中调用了该函数时,你需要在调用函数的文件顶部声明该函数。

四、调用函数

创建 C++ 函数时,你定义了函数应该做的事情。要使用函数,你需要调用或调用该函数。

当程序调用一个函数时,程序控制权转移到被调用的函数。被调用的函数执行定义的任务,当执行到返回语句或者到达函数结束的大括号时,它会把控制权交还给主程序。

要调用一个函数,只需带上所需参数并调用函数名称,如果函数返回一个值,则可以存储返回的值。例如:

#include <iostream>
using namespace std;

// 函数声明
int max(int num1, int num2);

int main () {
   // 局部变量声明
   int a = 100;
   int b = 200;
   int ret;

   // 调用函数以获取最大值
   ret = max(a, b);
   cout << "最大值是 : " << ret << endl;

   return 0;
}

// 返回两数中较大的函数
int max(int num1, int num2) {
   // 局部变量声明
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

编译并运行上述代码后,会产生以下结果:

最大值是 : 200

五、函数参数

如果函数需要使用参数,它必须声明接受参数值的变量。这些变量称为函数的形式参数。

形式参数像函数内部的其他局部变量一样行为,并在进入函数时创建,在退出时销毁。

调用函数有两种方式传递参数:

  1. 值传递 这种方法将实际值复制到函数的形式参数中。在这种情况下,对参数所做的更改不会影响实参。

  2. 指针传递 这种方法将实参的地址复制到形式参数中。在函数内部,该地址用于访问实际的参数。这意味着对参数的更改会影响实参。

  3. 引用传递 这种方法将实参的引用复制到形式参数中。在函数内部,该引用用于访问实际的参数。这意味着对参数的更改会影响实参。

默认情况下,C++ 使用值传递来传递参数。一般来说,这意味着函数内的代码不能改变用来调用函数的参数,并且在上述 max() 函数调用中使用的也是这种方法。

六、参数默认值

当你定义一个函数时,可以为最后一个参数指定默认值。如果在调用函数时没有为相应的参数指定值,则使用默认值。

这是通过在函数定义中使用赋值运算符并为参数分配值来实现的。如果在调用函数时不为该参数传递值,则使用给定的默认值,但如果指定了值,则忽略默认值并使用传递的值。考虑以下示例:

#include <iostream>
using namespace std;

int sum(int a, int b = 20) {
   int result;
   result = a + b;

   return (result);
}

int main () {
   // 局部变量声明
   int a = 100;
   int b = 200;
   int result;

   // 调用函数以添加值
   result = sum(a, b);
   cout << "总值是 :" << result << endl;

   // 再次调用函数
   result = sum(a);
   cout << "总值是 :" << result << endl;

   return 0;
}

编译并执行上述代码后,会产生以下结果:

总值是 :300
总值是 :120
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图