最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

视焦点讯!day3 函数的定义和调用,练习编写简单的程序(记录1)

来源:博客园

一、函数的定义

可以分为以下两种:

1、函数声明和函数定义分离

这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义。

例如,头文件 example.h 中声明了一个函数 add:


【资料图】

#ifndef EXAMPLE_H#define EXAMPLE_Hint 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 类型值的函数。

声明函数指针变量并赋值。

pfunc ptr = add;

这行代码声明了一个名为 ptr 的函数指针变量,并将其赋值为 add 函数的地址。

通过函数指针调用函数。

int result = ptr(a, b);

这行代码通过函数指针 ptr 调用 add 函数,并将计算结果赋值给 result 变量。

完整的代码示例如下:

#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 << result << endl;  // 输出 15    return 0;}

通过使用 typedef 关键字可以定义函数指针类型,从而使得函数指针的声明和使用更加方便。

总之,不管是哪一种方式,都可以实现对函数的调用。但是需要注意的是,当函数的参数列表较长时,使用函数指针来调用函数可能会比较繁琐,此时应该使用普通函数调用来简化代码。

关键词: