2014-11-04 5 views
-2

scary이라는 변수를 정의하는 것이 어떻게 double 형 포인터의 단일 arg를 취하여 short 포인터를 반환하는 함수에 대한 포인터입니까?함수에 대한 포인터

이 정보가 맞습니까? short* (*scary)(double*)

+1

테스트 할 수있는 방법이있는 경우 ... –

+4

[예] (http://cdecl.ridiculousfish.com/?q=short*+%28*scary%29%28double*%29) –

+0

전체 I 당신이 이것을해서는 안된다는 말을 스캔하십시오. – ha9u63ar

답변

1

당신은 정말 처음에 "함수 포인터 C"에 대한 검색 좀해야하지만, 난 당신이 이미 공부가 무엇인지 확인으로 질문을 할게요.

는 예, 맞습니다, 예를 들어 다음을 수행하십시오

short global = 2; 
short * ptr_to_global = &global; 

short* scary_fun(double* ptr) { 
    return ptr_to_global; 
} 

int main(void) { 
    double val = 22.0; 
    double *ptr_to_val = &val; 
    short* (*scary)(double*); 
    scary = &scary_fun; 
    printf("%d", *(scary(ptr_to_val))); // Prints "2" 
    return 0; 
} 

Example

1
  scary       -- scary 
     *scary       -- is a pointer to 
     (*scary)(   )   -- a function on 
     (*scary)(  arg)   -- parameter arg 
     (*scary)(  *arg)   --  is a pointer to 
     (*scary)(double *arg)   --  type double 
     *(*scary)(double *arg)   -- returning a pointer to 
short *(*scary)(double *arg)   -- type short 

첨자를 []() 연산자 단항 *보다 더 높은 우선 순위를 가지고 있습니다 함수를 호출, 그래서 :

T *a[N] -- a is an N-element array of pointer to T 
T (*a)[N] -- a is a pointer to an N-element array of T 
T *f()  -- f is a function retunring pointer to T 
T (*f)() -- f is a pointer to a function returning T 
관련 문제