2013-04-02 4 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

나는 당신이 함수 포인터 물건을 유지하기를 원한다고 생각한다. 그래서 dereferencing 대신 함수를 호출한다; 'printf ("% s \ n", pointer());' – Dave

답변

4

그 포인터가 함수의 이름 인 것처럼 당신은, 당신이 직접 함수를 호출 똑같은 방법으로 포인터를 통해 함수를 호출, ANSI C 표준과 주변의 별표 및 앰퍼샌드를 시작

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

함수 포인터는 선택적입니다.

#include <stdio.h> 

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

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


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

*는 함수 포인터 필요하지 않습니다 :

+4

대체 표기법은 괄호와 별표가있는'(* pointer)()'이다. '* pointer()'는 유효하지만 함수 포인터가 반환 한 문자열의 첫 번째 문자를 반환합니다. –

+0

감사합니다. 그것은 작동합니다 :) – Tommz

6

당신은 즉, 사용 괄호, 함수 포인터를 호출해야합니다. (어느 쪽도 &)

+0

고마워. 네, 저는 왜'pointer = voice; '가 잘 작동하는지 묻고있었습니다. – Tommz

관련 문제