2014-02-21 5 views
0

이 함수 포인터를 사용했지만 작동하지 않는 이유를 이해하지 못했습니다. 여기에 제 코드 조각이 있습니다. 이 코드를 실행할 때 명령 줄에 -r을 줄 때 명령을 내림차순과 오름차순으로 예상했는데 명령 줄 입력이 없으면 오름차순으로 인쇄해야합니다.프로그램에서 함수 포인터를 사용합니다.

내 코드에서 무엇이 잘못 되었습니까 ?? decending_sort()ascending_sort()도 지금까지 실행되도록

#include <stdio.h> 
#include <stdlib.h> 

void decending_sort() { 
    printf ("Decending order \n"); 
} 

void ascending_sort() { 
    printf ("Ascending order \n"); 
} 

int main(int argc, char **argv) { 

int i; 
void (*sort)(); 

while (*++argv) { 
    if ((strcmp (*argv, "-r")) == 0) 
     sort = decending_sort; 
} 
sort = ascending_sort; 
} 
+1

나는's 오트'. –

답변

5

당신은, 함수 변수로 sort 정의에 값을 할당, 그러나 결코 그것을 호출합니다.

는이 마지막 줄을 추가 호출하려면에`주 또한

()

[...] 

    sort(); 
} 
: 매개 변수없이 기능은 다음과 같이 선언한다

void decending_sort(void); 

어느 변수이어야한다 그들의 유형의

void (*sort)(void); 
+0

왜 내가 sort()를 추가해야합니까? 라인을 메인, 나는 함수 포인터를 생성하고 함수의 주소를 전달할 때 자동으로 해당 함수로 전환해야합니다. – user3336874

+0

@ user3336874 설명해주십시오. 어떤 기능의 주소가 어딘가에 저장되어 있다고 ('sort '에 무엇인가 할당 한 것과 같이) 기계에 그 주소에서 코드를 실행하도록 컴퓨터에 알려주지 않는다는 것을 알려줍니다. – alk

+1

@ user3336874 할당은 괜찮지 만'sort()'를 사용하여 함수를 호출하지 않는 한 어떻게 실행됩니까? –

관련 문제