C++函数的定义、参数传递、重载、嵌套
一. 函数的定义
1. 基本语法
在C++中,函数由函数头和函数体组成。函数头包含函数的返回类型、函数名和参数列表(可以为空),函数体包含在一对花括号内,是实现函数功能的代码块。
例如,定义一个简单的函数来计算两个整数的和:
int add(int num1, int num2) { return num1 + num2; }
这里int是函数的返回类型,表示函数将返回一个整数。add是函数名,(int num1, int num2)是参数列表,其中num1和num2是函数的参数,在函数体中可以使用这些参数进行计算。
2. 函数的返回值
函数可以返回一个值(除了void类型的函数)。返回值的类型在函数头中指定。例如,上述add函数返回两个整数相加的结果。如果函数不需要返回值,则使用void作为返回类型。
void printMessage() { std::cout << "Hello, World!" << std::endl; }
二. 函数的参数传递
1. 值传递
在值传递中,函数接收的是实参的值的副本。对函数内部参数的修改不会影响到外部的实参。
void increment(int num) { num++; std::cout << "Inside the function, num = " << num << std::endl; } int main() { int num = 5; increment(num); std::cout << "Outside the function, num = " << num << std::endl; return 0; }
输出结果为:
Inside the function, num = 6 Outside the function, num = 5
2. 引用传递
引用传递允许函数直接操作实参变量。在函数定义时,参数类型后面加上&表示引用类型。
void incrementByReference(int& num) { num++; std::cout << "Inside the function, num = " << num << std::endl; } int main() { int num = 5; incrementByReference(num); std::cout << "Outside the function, num = " << num << std::endl; return 0; }
输出结果为:
Inside the function, num = 6 Outside the function, num = 6
3. 常量引用传递
当函数不需要修改传入的参数,但参数可能是较大的数据类型(如结构体、类对象)时,为了避免不必要的复制,可以使用常量引用传递。
void printArray(const int& arr[], int size) { for (int i = 0; i < size; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; }
三. 函数的重载
函数重载是指在同一个作用域内,可以定义多个同名函数,只要它们的参数列表不同(参数个数、类型或者顺序不同)。
int add(int num1, int num2) { return num1 + num2; } double add(double num1, double num2) { return num1 + num2; } int add(int num1, int num2, int num3) { return num1 + num2 + num3; }
这样,根据实参的类型和个数,编译器会自动调用合适的add函数。
int main() { int result1 = add(3, 5); double result2 = add(3.5, 2.5); int result3 = add(1, 2, 3); return 0; }
四. 函数的嵌套
在C++中,函数内部可以定义其他函数,这种函数称为嵌套函数。不过,嵌套函数的作用域仅限于包含它的函数内部。
void outerFunction() { std::cout << "This is the outer function." << std::endl; void innerFunction() { std::cout << "This is the inner function." << std::endl; } innerFunction(); }
需要注意的是,在C++标准中,在函数内部定义函数不是所有编译器都支持的特性,在一些现代的C++编程风格中也不常用。更多的是使用类的成员函数等方式来组织代码结构。
C++编程语言基础
- C++:从入门到工作的教程
- 这是我的第一个 C++程序!
- C++中main函数有什么作用?
- C++中 #include 指令的作用
- C++中常用的预处理指令
- C++中 iostream 头文件定义了什么
- C++名称空间(namespace)
- C++标准库中 std 命名空间定义了些什么
- C++常用的头文件
- C++源代码的发布方式
- C++变量名的定义、变量的作用、使用规范
- C++的关键字列表
- C++数据类型:整型(整数类型)
- 二进制补码、原码、反码
- C++数据类型:char字符型(整数类型)
- ASCII码表及C++字符函数库(cctype)
- 计算机汉字编码
- C++数据类型:bool类型(整数类型)
- C++中 const 限定符
- C++数据类型:浮点数
- C++运算符:算术运算符
- C++运算符:类型转换规则
- 计算机数据存储大小端模式
- C++运算符:位运算 与 bitset类库
- C++运算符:关系运算符与逻辑运算符
- C++流程控制:顺序、选择、循环、跳转语句
- C++函数的定义、参数传递、重载、嵌套
- C++数组:一维、二维、多维数组的运用
- C-style字符串、库函数 与 std::string对象
- C++数据类型:结构体(struct)
- C++数据类型:联合体(union)
- C++数据类型:枚举(enum)
- C++数据类型别名:typedef
- C++指针
- C++内存操作符:new分配 与 delete释放
- C++标准模板库(STL)容器、算法、迭代器
- C++标准模板库(STL)vector顺序容器
- C++标准模板库(STL)array固定容器
- C++标准模板库(STL)list双向链表容器
- C++标准模板库(STL)deque双端队列
- C++标准模板库(STL)集合 set 关联容器
- C++标准模板库(STL)map关联容器
- C++标准模板库(STL)unordered_set
- C++标准模板库(STL)unordered_map
- C++标准模板库(STL)algorithm算法库
- C++文件操作
- C++数学库(cmath)数学常量与数学函数
- C++模板:函数模板、类模板
- C++与SQLite3联合打造实用的应用程序
- C++实战开发中常用的库(概述)
- 第二部分:C++面向对象编程
- C++:类的定义与声明、类对象应用
- 第三部分:数据结构与算法(概述)
- 第一部分:C++语言简介与学习路线