以下两个陈述之间有什么区别?
char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)
我知道第二个语句定义了一个函数,它接收一个指向char和int的指针并返回一个指向char的指针。我也知道char (*myfunc2)(char*, int)
会返回一个字符。
额外的*
在第一个陈述中意味着什么?
答案 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