2013-08-07 4 views
0

f가 f_pointer_type의 배열을 가리키고 싶습니다. 그래서 나는 무엇을 여기에서 놓쳤 느냐? 나는 '과제의 왼쪽 피연산자로 필요한 lvalue'오류가 나타납니다. 무슨 뜻이에요 ? 당신에 대해 읽으면함수에 대한 포인터 배열에 대한 포인터

#include <stdio.h> 
typedef char* (*f_pointer_type)(); 
char * retHello() 
{ 
    return "hello"; 
} 
int main() 
{ 
    char (* (*f())[])(); //Declare f to be a pointer to an array of pointers to function that gets nothing and return a char. 
    f_pointer_type funcs[3]; //an array of pointers to function that gets nothing and returns a pointer to char 
    f = &funcs; //ERROR : lvalue required as left operand of assignment 
    return 0; 
} 
+1

을 가지고 함수에 대한 포인터이다? f_pointer_type ** f; - –

+0

f가 frazy function forward declaration으로 해석 된 것 같습니다. –

답변

3

clockwise/spiral rulef 실제로 char*을 리턴하는 함수에 대한 포인터의 배열에 대한 포인터를 반환하는 기능입니다 것을 볼 수 있습니다. 즉, 함수 프로토 타입이며 변수 선언이 아닙니다.

이 대신보십시오 함수 포인터

f_pointer_type (*f)[]; 
+0

대단히 고마워! – elhamura

1

배열은 char* (*f[])()로 기입된다. 괄호가 잘못되었습니다.

f_pointer_type funcs[3] 예와 같이 항상 typedef를 사용하는 것이 더 좋지만 물론 그렇습니다.

1

당신은 function pointer.ff을 정의하면 F 변수 정의에서 형식 정의 사용하지 않는 이유는 void paramsreturn char *