3

以下两种说法有什么区别?

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

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

4

4 回答 4

5

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

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

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

于 2013-02-02T22:54:59.913 回答
2

这个问题已经回答了,只是想我会为没有看过它的人指出这个非常有用的网站;它有你的答案。

于 2013-02-02T23:03:12.457 回答
1

第一条语句中的 extra*意味着指针指向myfunc1返回的函数char *

所以:

char *(*func1)(char*, int)  // pointer to a function that returns 'char*'
char (*func2)(char*, int)   // pointer to a function that returns 'char'
于 2013-02-02T22:56:15.890 回答
1

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

函数指针需要在函数名 (*name) 周围加上括号

于 2013-02-02T23:03:45.793 回答