这是我在C中的程序:
#include <stdio.h>
char const* voice(void){
return "hey!";
}
int main(){
const char* (*pointer)(void);
pointer = &voice;
printf ("%s\n", *pointer); // check down *
return 0;
}
我做错了什么?
答案 0 :(得分:6)
您需要调用函数指针,即使用括号:
#include <stdio.h>
char const* voice(void){
return "hey!";
}
int main(){
const char* (*pointer)(void);
pointer = &voice;
printf ("%s\n", pointer());
// ^^^^^^^^^
return 0;
}
函数指针不需要 *
。 (都不是&
)
答案 1 :(得分:4)
通过指针调用函数的方式与您直接调用函数的方式相同,就好像该指针是函数的名称一样:
printf ("%s\n", pointer());
从ANSI C标准开始,函数指针周围的星号和&符号是可选的。