c언어 포인터 함수 예제

C에서는 다음 프로그램에서와 같이 배열에 대한 포인터를 반환 할 수 있습니다 : 복잡하게 보이지만 매우 간단합니다. 이 경우(*foo)는 함수에 대한 포인터이며, 인수는 int* 형식이고 반환 형식은 void*입니다. 포인터없이이 동일한 프로그램을 시도하면 보너스 금액이 급여에 반영되지 않는다는 것을 알게 될 것입니다.이 함수에 의한 변경은 함수의 로컬 변수에 대해 수행되기 때문입니다. 포인터를 사용할 때 변수의 주소에서 값이 변경됩니다.이 점은 특히 C에서 매우 유용합니다. C에서는 함수 포인터를 사용하여 코드 중복을 방지할 수 있습니다. 예를 들어 간단한 qsort() 함수는 오름차순 또는 내림차순으로 배열을 정렬하거나 구조어 배열의 경우 다른 순서로 정렬하는 데 사용할 수 있습니다. 이뿐만 아니라 함수 포인터와 void 포인터를 사용하면 모든 데이터 형식에 qsort를 사용할 수 있습니다. 다음 프로그램은 qsort() 함수를 사용하여 정수 배열을 작은 숫자에서 큰 숫자로 정렬합니다: 6) 일반 데이터 포인터와 마찬가지로 함수 포인터는 인수로 전달될 수 있으며 함수에서 반환될 수도 있습니다. 예를 들어 래퍼()가 void fun()을 매개 변수로 수신하고 전달된 함수를 호출하는 다음 C 프로그램을 생각해 보십시오.

이것은 참조로 호출을 사용하여 번호를 교환하는 방법을 보여 주는 가장 인기 있는 예제 중 하나입니다. 이제 EOF까지 정수의 시작 및 종료와 단계 크기를 읽는 프로그램을 작성해 보겠습니다. 각 데이터 읽기 집합에 대해 프로그램은 sum_int를 사용하여 정수의 합과 sum_squares()를 사용하여 정수의 합을 먼저 계산하고 인쇄합니다. 이 두 합계는 함수가 작성되는 방식이기 때문에 하나의 단계에 있습니다. 다음으로 프로그램은 위의 일반 합계 함수 sum()을 사용하여 지정된 단계 크기로 정수 및 제곱의 합계를 계산합니다. 그림 14.17은 프로그램을 보여줍니다. 이전에 함수에는 변수와 유사한 저장소 클래스와 범위가 있음을 알았습니다. C에서는 함수를 가리키는 포인터 변수와 같은 함수 포인터를 정의하고 사용할 수도 있습니다. 함수 포인터를 선언하고 값을 할당한 다음 가리키는 함수에 액세스하는 데 사용할 수 있습니다.

함수 포인터는 다음과 같이 선언됩니다: 함수 포인터는 해당 함수의 이름을 할당할 때 특정 함수를 가리킬 수 있습니다.