day3 函数的定义和调用,练习编写简单的程序(记录1) ...

打印 上一主题 下一主题

主题 526|帖子 526|积分 1578

一、函数的定义

可以分为以下两种:
1、函数声明和函数定义分离

这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义。
例如,头文件 example.h 中声明了一个函数 add:
  1. #ifndef EXAMPLE_H
  2. #define EXAMPLE_H
  3. int add(int a, int b);  // 声明函数原型
  4. #endif //EXAMPLE_H
复制代码
然后在源文件 example.c 中实现函数定义:
  1. #include "example.h"
  2. int add(int a, int b) {  // 实现函数定义
  3.     return a + b;
  4. }
复制代码
这种方法可以使得代码更加模块化,便于维护和重用。
函数声明和函数定义结合在一起

这种方法将函数声明和函数定义结合在一起,通常在源文件中直接实现函数定义。
  1. int sub(int a, int b) {  // 函数声明和定义结合在一起
  2.     return a - b;
  3. }
复制代码
这种方法比较简单,但是当函数需要在多个源文件中使用时,需要在每个源文件中都复制一份函数定义。
总之,不管是哪一种方法,函数的定义都包含函数名、参数列表和函数体三部分,通过定义函数来实现特定的功能。在编写函数时,需要考虑函数的输入、输出以及具体实现逻辑,保证程序的正确性和效率。
二、函数的调用

可以分为以下两种方式:
普通函数调用

普通函数调用是指通过函数名加括号的方式来调用函数,例如:
  1. int a = 10, b = 5;
  2. int result = add(a, b);  // 调用 add 函数计算 a + b 的值,并将结果赋值给变量 result
复制代码
在这个例子中,我们使用 add(a, b) 的方式来调用 add 函数,并将计算结果赋值给变量 result。
通过函数指针调用函数(法1)

另一种方式是通过函数指针来调用函数。函数指针是一个指向函数的指针变量,可以存储函数的入口地址。
例如,假设有以下函数:
  1. int add(int a, int b) {
  2.     return a + b;
  3. }
复制代码
我们可以定义一个函数指针变量 pfunc,并将其赋值为 add 函数的入口地址:
  1. //int (*pfunc)(int, int);  // 定义函数指针变量
  2. //int* pfunc(int, int)     //我的理解定义一个函数指针
  3. pfunc = add;  // 将函数指针赋值为 add 函数的入口地址
复制代码
然后,我们可以通过 (*pfunc)(a, b) 的方式来调用 add 函数,例如:
  1. int a = 10, b = 5;
  2. //我的理解的通过*pfunc解引用
  3. int result = (*pfunc)(a, b);  // 通过函数指针调用 add 函数计算 a + b 的值,并将结果赋值给变量 result
复制代码
在这个例子中,我们首先定义了一个函数指针变量 pfunc,然后将其赋值为 add 函数的入口地址。接着,我们使用 (*pfunc)(a, b) 的方式来调用 add 函数,并将计算结果赋值给变量 result。
通过函数指针调用函数(法2)

通过函数指针调用函数的另一种写法是使用 typedef 关键字来定义函数指针类型。具体步骤如下:
使用 typedef 定义函数指针类型。
  1. typedef int (*pfunc)(int, int);
复制代码
上述语句定义了一个名为 pfunc 的函数指针类型,它表示一个接收两个 int 类型参数并返回 int 类型值的函数。
声明函数指针变量并赋值。
  1. pfunc ptr = add;
复制代码
这行代码声明了一个名为 ptr 的函数指针变量,并将其赋值为 add 函数的地址。
通过函数指针调用函数。
  1. int result = ptr(a, b);
复制代码
这行代码通过函数指针 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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表