14函数调用

简介: 14函数调用

C++入门——60s从0到1

函数调用

 

C++中的函数调用是程序执行过程中的一个重要环节,它允许程序执行跳转到另一个函数,并在该函数执行完毕后返回到调用点。函数调用的过程涉及多个步骤,包括参数传递、函数执行和返回值处理。

 

函数调用过程

 

1.参数传递:当调用一个函数时,需要将参数传递给该函数。参数传递有两种方式:值传递和引用传递。

值传递:在值传递中,函数接收参数的副本,而不是参数的原始值。这意味着在函数内部对参数的修改不会影响原始值。

引用传递:在引用传递中,函数接收参数的引用,而不是参数的副本。这意味着在函数内部对参数的修改会直接影响原始值。

2. 函数执行:一旦参数被传递给函数,函数就开始执行。函数体中的代码按照从上到下的顺序执行。

3. 返回值处理:如果函数有返回值,那么在函数执行完毕后,这个返回值会被返回给调用者。调用者可以使用这个返回值进行进一步的操作。

 

函数调用示例

 

下面是一个简单的C++函数调用的示例:

 

 

#include <iostream>
 
// 定义一个函数,接受两个整数参数并返回它们的和
int add(int a, int b) {
    return a + b;
}
 
int main() {
    int x = 5;
    int y = 10;
    int result;
 
    // 调用add函数,并将返回值赋给result变量
    result = add(x, y);
 
    // 输出结果
    std::cout << "The sum of " << x << " and " << y << " is " << result << std::endl;
 
    return 0;
}

在这个示例中,`add`函数接受两个整数参数`a`和`b`,并返回它们的和。在`main`函数中,我们声明了两个整数变量`x`和`y`,并调用`add`函数来计算它们的和。函数的返回值被赋给`result`变量,并最终被输出到控制台。

 

调用方式

 

1. 函数调用作为表达式

 

函数调用可以作为表达式的一部分,这种调用方式是最常见的。函数调用的结果(即返回值)可以被用于赋值、作为其他函数的参数、或在表达式中进行计算。

int add(int a, int b) {
    return a + b;
}
 
int main() {
    int result = add(3, 4); // 函数调用作为表达式,返回值赋给result
    std::cout << result << std::endl;
    return 0;
}

 

2. 函数调用作为语句

 

函数调用也可以作为单独的语句出现,这通常发生在函数不返回任何值(即返回类型为`void`)的情况下。

 

void displayMessage() {
    std::cout << "Hello, World!" << std::endl;
}
 
int main() {
    displayMessage(); // 函数调用作为语句,不返回任何值
    return 0;
}

 

3. 函数调用作为函数参数

 

一个函数的参数也可以是另一个函数的调用结果。这允许我们将一个函数的输出直接传递给另一个函数。

 

int square(int x) {
    return x * x;
}
 
void printSquare(int x) {
    std::cout << "Square of " << x << " is " << x * x << std::endl;
}
 
int main() {
    printSquare(square(5)); // 将square函数的返回值作为printSquare函数的参数
    return 0;
}

 

4. 函数调用作为初始化器

 

在声明变量时,可以直接调用函数来初始化该变量。

int add(int a, int b) {
    return a + b;
}
 
int main() {
    int sum = add(3, 4); // 函数调用作为sum的初始化器
    std::cout << "Sum: " << sum << std::endl;
    return 0;
}

 

5. 嵌套函数调用

 

一个函数内部可以调用另一个函数,这种调用方式称为嵌套函数调用。

```c++
int multiply(int a, int b) {
    return a * b;
}
 
int calculate(int x, int y, int z) {
    return multiply(x, y) + z; // 嵌套函数调用
}
 
int main() {
    int result = calculate(2, 3, 4); // 调用calculate函数
    std::cout << "Result: " << result << std::endl; // 输出9,因为2*3+4=9
    return 0;
}

 

6. 函数指针调用

 

通过函数指针也可以调用函数。函数指针是一个指向函数的指针变量,可以用来调用函数。

 

int add(int a, int b) {
    return a + b;
}
 
int subtract(int a, int b) {
    return a - b;
}
 
int main() {
    int (*funcPtr)(int, int); // 声明一个函数指针
    funcPtr = add; // 将函数指针指向add函数
    int sum = funcPtr(3, 4); // 通过函数指针调用函数
    std::cout << "Sum: " << sum << std::endl;
 
    funcPtr = subtract; // 将函数指针指向subtract函数
    int difference = funcPtr(5, 3); // 通过函数指针调用另一个函数
    std::cout << "Difference: " << difference << std::endl;
    return 0;

}

 

注意事项

 

函数调用前,需要确保函数已经被正确定义,并且在调用它的作用域内是可见的。

函数调用时,参数的类型和数量必须与函数定义时的参数类型和数量相匹配。

如果函数有返回值,那么在函数调用后,需要使用一个变量来接收这个返回值,否则这个返回值会被丢弃。

 

 

目录
相关文章
|
3月前
练习函数调用
练习函数调用。
22 0
C4.
|
2月前
|
Python
Phython调用函数
Phython调用函数
C4.
13 0
函数调用的方式有几种
函数调用的方式有几种
|
2月前
|
存储 算法 Python
调用函数
调用函数
20 1
|
3月前
|
算法 前端开发
2666. 只允许一次函数调用
2666. 只允许一次函数调用
20 0
|
5月前
函数调用
输出十行十列的星号(要求用函数调用方式解决)。
24 1
|
10月前
|
C++
函数的传值调用和传址调用
函数的传值调用和传址调用
|
11月前
|
编译器
【为什么】将指针传递给函数
【为什么】将指针传递给函数
|
12月前
|
C语言
【C语言函数调用详解】——传值调用&传址调用
【C语言函数调用详解】——传值调用&传址调用
231 0
|
12月前
14-函数调用运算符重载
14-函数调用运算符重载