我有这次考试复习,其中一个问题是: 为函数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;
}
我知道你不是教授而且不知道他的成绩如何,但这是为函数编写函数指针的唯一方法,还是有另一种方法我不需要改变原来的函数?
答案 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);
#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;
}