如何将指针发送到功能的指针

How can I send a pointer to function to function?

本文关键字:指针 功能      更新时间:2023-10-16

我知道如何将指针发送到函数,但是如何正确发送指针以函数以函数?

代码:

#include <iostream>
#include <ctime>
using namespace std;
int avg(int *A, int *B, int A_size, int B_size) {
    return NULL;
}
int min(int *A, int *B, int A_size, int B_size) {
    return NULL;
}
int max(int *A, int *B, int A_size, int B_size) {
    return NULL;
}
int Action(int *A, int *B, int A_size, int B_size, int (*fun_ptr)) {
    return NULL;
}
void main() {
    srand(time(NULL));
    int A_size, B_size; 
    int (*f) (int*, int*, int, int);
    cout << "Type A size and B size: "; cin >> A_size >> B_size;
    int *A = new int[A_size];
    int *B = new int[B_size];
    cout << "A massive: ";
    for (int *i = A; i < A + A_size; i++) {
        *i = rand() % 10;
        cout << *i << " ";
    }
    cout << endl;
    cout << "B massive: ";
    for (int *i = B; i < B + B_size; i++) {
        *i = rand() % 10;
        cout << *i << " ";
    }
    cout << endl;
    int choose;
    cout << "1.max" << endl;
    cout << "2.min" << endl;
    cout << "3.avg" << endl;
    cout << "Chose the fucntion: ";  cin >> choose;
    switch (choose) {
        case 1: f = &max; break;
        case 2: f = &min; break;
        case 3: f = &avg; break;
    }
    Action(&A[0], &B[0], A_size, B_size, &f);
}

我想将指针发送到函数以函数Action,但是我需要更改什么?它不起作用。f是函数的指针。

int (*fun_ptr)等效于 int *fun_ptr。它声明了指向int的指针,而不是函数。

这是用于声明功能指针的语法(特别是可以指向avgminmax的功能指针):int (*fun_ptr)(int*, int*, int, int)。请注意您声明中缺少的参数列表。PS。当您声明f时,您已经设法这样做。


代码中的其他错误:

main必须返回intNULL不能保证将其隐式转换为int&f的类型是指向函数指针的指针,而不是指向函数的指针。