以下两种说法有什么区别?
char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)
我知道第二个语句定义了一个函数,它接收一个指向 char 和一个 int 的指针并返回一个指向 char 的指针。我也知道char (*myfunc2)(char*, int)
, 会返回一个字符。*
第一条语句中的额外含义是什么?
第一个定义指向函数的指针,第二个是函数....
这样你就可以做...myfunc1 = myfunc2
每当您看到看起来像函数的东西,但函数的名称在括号中并带有 * like void (*blah)( void ) 时,这意味着您正在定义一个指向函数的指针。
这个问题已经回答了,只是想我会为没有看过它的人指出这个非常有用的网站;它有你的答案。
第一条语句中的 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'
第一种情况定义了一个函数指针 myfunc1,它返回一个 char * 变量。第二种情况定义了一个函数,而不是一个返回 char * 变量的函数指针。
函数指针需要在函数名 (*name) 周围加上括号