【指针函数和函数指针】

1. 概述

  函数指针指针函数是两个不同的概念。

  函数指针是指一个指针变量,该指针变量存储了一个函数的地址。通过函数指针可以实现动态调用函数,根据需要在程序运行时指定要调用的函数。函数指针的声明方式为:返回类型 (*指针变量名)(参数列表)。
  指针函数则是指一个返回指针的函数,即函数的返回值是一个指针类型。指针函数的声明方式为:返回类型 (*函数名)(参数列表)。
  因此,函数指针和指针函数的区别在于它们的返回值类型声明方式不同。函数指针存储了一个函数的地址,可以用来动态调用函数;指针函数则是一个返回指针的函数,可以返回指向某个数据类型的指针。

2. 案例分析

指针函数

示例:(C++)

#include <iostream>

using namespace std;

int* findMax(int* arr, int n) {
    if (n <= 0) {
        return nullptr;
    }
    int* max = arr;
    for (int i = 1; i < n; i++) {
        if (arr[i] > *max) {
            max = &arr[i];
        }
    }
    return max;
}

int main() {
    int arr[] = { 10, 23, 5, 17, 25 };
    int* maxPtr = findMax(arr, 5);
    cout << maxPtr << endl;
    cout << *maxPtr << endl;
    if (maxPtr != nullptr) {
        cout << "Max value is " << *maxPtr << endl;
    }
    else {
        cout << "Array is empty." << endl;
    }
    return 0;
}

  在这个例子中,定义了一个指针函数findMax(),用于查找数组中的最大值,并返回指向该最大值的指针。在函数中,先判断数组是否为空,如果为空则返回nullptr。接着定义一个指针变量max,并将其初始化为数组的第一个元素的地址。使用循环遍历数组,如果遇到比max指向的值更大的元素,则将max指向该元素的地址。最后返回max指向的地址,即最大值的地址。
  在main()函数中,调用findMax()函数查找数组中的最大值,并将返回的指针赋给maxPtr指针变量。如果返回的指针不为nullptr,则输出最大值。否则输出数组为空的提示信息。

输出结果:
在这里插入图片描述
  可以发现,maxPtr为指针,其指向数组arr中的最大元素。

函数指针

示例:(C++)

#include <iostream>

using namespace std;

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*operation)(int, int);
    int result;

    operation = &add;
    result = operation(4, 2);
    cout << "4 + 2 = " << result << endl;

    operation = &subtract;
    result = operation(4, 2);
    cout << "4 - 2 = " << result << endl;

    return 0;
}

  在这个例子中,定义了两个函数add()subtract(),它们分别实现加法和减法运算。接下来定义了一个函数指针变量operation,用于存储函数的地址。通过赋值操作将函数地址分别赋给operation,然后通过函数指针调用函数并计算结果,最后输出结果。
输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值