【基础】函数基础:定义、调用与参数传递
发布时间: 2024-06-28 22:29:09 阅读量: 86 订阅数: 131
![【基础】函数基础:定义、调用与参数传递](https://img-blog.csdnimg.cn/20210401170340530.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMDc3NTY1,size_16,color_FFFFFF,t_70)
# 1. **2.1 函数参数的传递方式**
函数参数的传递方式决定了函数内部对参数值的修改是否会影响到函数外部的参数值。主要有两种传递方式:
**2.1.1 值传递**
值传递是指将参数的副本传递给函数。函数内部对参数值的修改不会影响到函数外部的参数值。例如:
```cpp
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
```
调用该函数后,`a` 和 `b` 的值不会被交换。
**2.1.2 引用传递**
引用传递是指将参数的引用传递给函数。函数内部对参数值的修改会影响到函数外部的参数值。例如:
```cpp
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
```
调用该函数后,`a` 和 `b` 的值会被交换。
# 2. 函数调用技巧
### 2.1 函数参数的传递方式
#### 2.1.1 值传递
值传递是函数调用时,将实参的值复制一份传递给形参。因此,形参的变化不会影响实参的值。
```c++
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
swap(x, y);
cout << "x: " << x << ", y: " << y << endl; // 输出:x: 10, y: 20
}
```
**代码逻辑分析:**
* `swap` 函数中,形参 `a` 和 `b` 接收实参 `x` 和 `y` 的副本。
* 在 `swap` 函数内部,对 `a` 和 `b` 进行交换,但这些变化只影响函数内部的副本,不会影响实参 `x` 和 `y`。
* `main` 函数中,打印 `x` 和 `y` 的值,结果为 10 和 20,说明实参的值没有改变。
#### 2.1.2 引用传递
引用传递是函数调用时,将实参的引用传递给形参。因此,形参的变化会直接影响实参的值。
```c++
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
swap(x, y);
cout << "x: " << x << ", y: " << y << endl; // 输出:x: 20, y: 10
}
```
**代码逻辑分析:**
* `swap` 函数中,形参 `a` 和 `b` 接收实参 `x` 和 `y` 的引用。
* 在 `swap` 函数内部,对 `a` 和 `b` 进行交换,这些变化直接影响实参 `x` 和 `y`。
* `main` 函数中,打印 `x` 和 `y` 的值,结果为 20 和 10,说明实参的值发生了改变。
### 2.2 函数重载与函数指针
#### 2.2.1 函数重载的原理和应用
函数重载是指在同一个作用域内,定义多个具有相同名称但参数列表不同的函数。编译器会根据实参的类型和数量,自动选择调用哪个函数。
```c++
int sum(int a, int b) {
return a + b;
}
double sum(double a, double b) {
return a + b;
}
int main() {
cout << sum(1, 2) << endl; // 输出:3
cout << sum(1.5, 2.5) << endl; // 输出:4
}
```
**代码逻辑分析:**
* 定义了两个 `sum` 函数,分别接受两个 `int` 和两个 `double` 参数。
* `main` 函
0
0