指向C中的函数的指针

时间:2013-02-02 22:53:09

标签: c pointers

以下两个陈述之间有什么区别?

char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)

我知道第二个语句定义了一个函数,它接收一个指向char和int的指针并返回一个指向char的指针。我也知道char (*myfunc2)(char*, int)会返回一个字符。 额外的*在第一个陈述中意味着什么?

4 个答案:

答案 0 :(得分:5)

第一个定义指向函数的指针,第二个定义函数....

这样你就可以...... myfunc1 = myfunc2

每当你看到一个看起来像函数的东西,但函数的名字在括号中时带有* like void(* blah)(void),这意味着你要定义一个指向函数的指针。

答案 1 :(得分:2)

这个问题已得到解答,我想我会指出this quite useful site没有看到它的人;它有你的答案。

答案 2 :(得分:1)

第一个语句中的额外*表示指针myfunc1是指向返回char *的函数。

所以:

char *(*func1)(char*, int)  // pointer to a function that returns 'char*'
char (*func2)(char*, int)   // pointer to a function that returns 'char'

答案 3 :(得分:1)

第一种情况定义了一个返回char *变量的函数指针myfunc1。 第二种情况定义一个函数,而不是一个返回char *变量的函数指针。

函数指针需要围绕函数名称(* name)

的parens