指向C中函数的指针

指向C中函数的指针,c,pointers,C,Pointers,以下两种说法的区别是什么 char *(*myfunc1)(char*, int) char *myfunc2(char*, int) 我知道第二条语句定义了一个函数,该函数接收指向char的指针和int,并返回指向char的指针。我还知道char(*myfunc2)(char*,int)将返回一个char。 在第一条语句中,额外的*是什么意思?第一条语句定义了指向函数的指针,第二条语句是函数 这样你就可以myfunc1=myfunc2 每当你看到一个看起来像函数的东西,但函数名在括号中加了一

以下两种说法的区别是什么

char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)
我知道第二条语句定义了一个函数,该函数接收指向char的指针和int,并返回指向char的指针。我还知道
char(*myfunc2)(char*,int)
将返回一个char。
在第一条语句中,额外的
*
是什么意思?

第一条语句定义了指向函数的指针,第二条语句是函数

这样你就可以<代码>myfunc1=myfunc2


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

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

因此:


这个问题已经得到了回答,我想我会为那些没有看到它的人指出;它有你的答案


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


函数指针需要在函数名(*name)周围使用括号。

不,第二个指针不声明函数指针(因为它是一个声明,所以它更不定义它)。
char(*func)(
char*func()
是两个非常不同的东西-这个答案是错误的。@H2CO3:是的,它们是两个非常不同的东西。我不明白这怎么会使这个答案错。@H2CO3:不,我没有编辑它。这是正确的。
char *(*func1)(char*, int)  // pointer to a function that returns 'char*'
char (*func2)(char*, int)   // pointer to a function that returns 'char'