参数中没有指针的函数指针

时间:2014-02-10 03:04:31

标签: c++ function pointers

我有这次考试复习,其中一个问题是:     为函数void myfun(int yourage)写一个函数point [er];

我不确定如何只使用该函数做任何事情而不向参数添加任何东西..我知道函数指针的基础知识,并提出了一个非常基本的场景,我相信解决了这个问题,这是:

void myfun(int (*fptr)(int), int yourage)
{
    cout << fptr(yourage) << endl;
}
int yourage(int x)
{
    return x; //really simple
}

int main()
{
    int age = 10;
    int (*pfnc)(int);
    pfnc = yourage;
    myfun(pfnc,age);
    return 0;
}

我知道你不是教授而且不知道他的成绩如何,但这是为函数编写函数指针的唯一方法,还是有另一种方法我不需要改变原来的函数?

2 个答案:

答案 0 :(得分:1)

如果原始功能是:

void myfun(int yourage)
{
    cout << "age is: " << yourage << endl;
}

然后我会将这些说明理解为:

int main()
{
    // write a function pointer for myfun
    typedef void myfun_type(int);
    myfun_type* myfun_ptr = &myfun;

    //now use it
    int a[] = { 31, 27, 25, 23, 21, 18 };
    for_each(begin(a), end(a), myfun_ptr);
}

答案 1 :(得分:0)

typedef void (*pFunc)(int);

Example

#include <iostream>

typedef void (*pFunc)(int); // declare the function pointer type

void my_function(int v) // the function you want to point to
{
    std::cout << "value = " << v << std::endl;  
}

void func(pFunc f, int v) // a function that takes a function pointer as a paramter
{
    f(v);
}

int main() 
{
    pFunc myFunc = &my_function;
    func(myFunc, 5); // call the function with a function pointer parameter
    return 0;
}