马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、函数的定义
可以分为以下两种:
1、函数声明和函数定义分离
这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义。
例如,头文件 example.h 中声明了一个函数 add:- #ifndef EXAMPLE_H
- #define EXAMPLE_H
- int add(int a, int b); // 声明函数原型
- #endif //EXAMPLE_H
复制代码 然后在源文件 example.c 中实现函数定义:- #include "example.h"
- int add(int a, int b) { // 实现函数定义
- return a + b;
- }
复制代码 这种方法可以使得代码更加模块化,便于维护和重用。
函数声明和函数定义结合在一起
这种方法将函数声明和函数定义结合在一起,通常在源文件中直接实现函数定义。- int sub(int a, int b) { // 函数声明和定义结合在一起
- return a - b;
- }
复制代码 这种方法比较简单,但是当函数需要在多个源文件中使用时,需要在每个源文件中都复制一份函数定义。
总之,不管是哪一种方法,函数的定义都包含函数名、参数列表和函数体三部分,通过定义函数来实现特定的功能。在编写函数时,需要考虑函数的输入、输出以及具体实现逻辑,保证程序的正确性和效率。
二、函数的调用
可以分为以下两种方式:
普通函数调用
普通函数调用是指通过函数名加括号的方式来调用函数,例如:- int a = 10, b = 5;
- int result = add(a, b); // 调用 add 函数计算 a + b 的值,并将结果赋值给变量 result
复制代码 在这个例子中,我们使用 add(a, b) 的方式来调用 add 函数,并将计算结果赋值给变量 result。
通过函数指针调用函数(法1)
另一种方式是通过函数指针来调用函数。函数指针是一个指向函数的指针变量,可以存储函数的入口地址。
例如,假设有以下函数:- int add(int a, int b) {
- return a + b;
- }
复制代码 我们可以定义一个函数指针变量 pfunc,并将其赋值为 add 函数的入口地址:- //int (*pfunc)(int, int); // 定义函数指针变量
- //int* pfunc(int, int) //我的理解定义一个函数指针
- pfunc = add; // 将函数指针赋值为 add 函数的入口地址
复制代码 然后,我们可以通过 (*pfunc)(a, b) 的方式来调用 add 函数,例如:- int a = 10, b = 5;
- //我的理解的通过*pfunc解引用
- int result = (*pfunc)(a, b); // 通过函数指针调用 add 函数计算 a + b 的值,并将结果赋值给变量 result
复制代码 在这个例子中,我们首先定义了一个函数指针变量 pfunc,然后将其赋值为 add 函数的入口地址。接着,我们使用 (*pfunc)(a, b) 的方式来调用 add 函数,并将计算结果赋值给变量 result。
通过函数指针调用函数(法2)
通过函数指针调用函数的另一种写法是使用 typedef 关键字来定义函数指针类型。具体步骤如下:
使用 typedef 定义函数指针类型。- typedef int (*pfunc)(int, int);
复制代码 上述语句定义了一个名为 pfunc 的函数指针类型,它表示一个接收两个 int 类型参数并返回 int 类型值的函数。
声明函数指针变量并赋值。这行代码声明了一个名为 ptr 的函数指针变量,并将其赋值为 add 函数的地址。
通过函数指针调用函数。这行代码通过函数指针 ptr 调用 add 函数,并将计算结果赋值给 result 变量。
完整的代码示例如下:
[code]#include using namespace std;int add(int a, int b) {
return a + b;
}typedef int (*pfunc)(int, int);int main() { int a = 10, b = 5; pfunc ptr = add; int result = ptr(a, b); cout |