如何从C中返回指针的函数打印字符串?

时间:2013-04-02 01:30:09

标签: c function-pointers

这是我在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;
}
  • *这个我试图打印从指针返回的内容,但似乎无法正常工作。

我做错了什么?

2 个答案:

答案 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标准开始,函数指针周围的星号和&符号是可选的。