2013-04-02 42 views
3

这是我在C程序:如何从函数上使用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

我猜你想保持函数指针的东西,所以只要调用函数,而不是提领的; 'printf(“%s \ n”,pointer());' – Dave

回答

4

您通过您直接调用一个函数完全相同的方式指针调用一个函数,因为如果该指针是函数的名称:

printf ("%s\n", pointer()); 

与ANSI C标准开始,周围的星号和&函数指针是可选的。

+4

替代符号是'(* pointer)()',带括号和星号。 '* pointer()'是有效的,但返回函数指针返回的字符串的第一个字符。 –

+0

非常感谢。它的工作:) – Tommz

6

你需要调用的函数指针,即使用括号:不需要函数指针

#include <stdio.h> 

char const* voice(void){ 
    return "hey!"; 
} 

int main(){ 
const char* (*pointer)(void); 
pointer = &voice; 


printf ("%s\n", pointer()); 
//    ^^^^^^^^^ 
return 0; 
} 

*。 (既不是&

+0

非常感谢。是的,我问自己为什么'pointer = voice;'也在工作。 – Tommz