2014-02-10 193 views
0

我有这个考试复习,其中一个问题是: 为函数void myfun(int yourage)写一个函数指针[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

它是否工作打算? _'我不需要改变原来的功能?'_你改变了_original_功能? –

+0

如果你问我,我会称之为“为函数指定函数'yourage'” –

+0

@πάνταῥεῖ该函数有效,但我认为它不是教授想要的格式。原始函数是void myfun(int yourage); – Jeremie

回答

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; 
} 
+2

这并不回答这个问题,虽然我甚至不确定问题是什么。 –

+0

@JesseGood“我不确定如何使用该功能来做任何事情,而无需向参数添加任何内容。” - 这给我留下了他不知道如何声明和使用函数指针的印象。 –

+0

@ZacHowland OP提到熟悉函数指针... –

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); 
}