최근에 함수 포인터로 작업하게되어 기뻤습니다. 나는 그들이 어떻게 일하는지 알게되었다. 함수 포인터의 고전적인 예는 다음과 같습니다함수 포인터를 쓰는 것이 함수를 호출하는 것보다 낫다.
print(add(x,y));
print(sub(x,y));
을하고 나는 그것을 설명하기 위해 노력 :
int add() {
return (100+10);
}
int sub() {
return (100-10);
}
void print(int x, int y, int (*func)()) {
printf("value is : %d", (x+y+(*func)()));
}
int main() {
int x=100, y=200;
print(x,y,add);
print(x,y,sub);
}
누군가는 (주) 안에 호출하는 것보다 더 나은 방법이라는 일전에 나에게 물었다. 그것은 단지 스택에 관한 것입니까, 아니면 다른 뭔가가 아래에 있습니까?
함수 포인터의 배열을 가져 와서 루프에서 호출하는 방법은 어떻습니까? 일반 인터페이스를 가지고, 제네릭 형식을 취하고 함수 포인터를 함수 포인터로 전달하는 방법은 어떻습니까? 고전적인 예는'qsort'이다. –
'add (x, y)'와'sub (x, y)'는 C에서 컴파일 가능하지만 쓸모가 없기 때문에 C++에서는 컴파일되지 않습니다. ** 언어 *). 그래서 가장 즉각적인 대답은 "코드가 컴파일되지 않기 때문"일 것입니다. – WhozCraig
당신의 예제는 함수 포인터를 사용하기에 충분할만큼 복잡하지는 않습니다. pointed-to 함수가 다른 함수를 실행하거나 특정 시간에 두 번 이상 호출되거나 호출 된 함수에 의해 선택된 인수로 호출되어야하는 예제를 고려하십시오. –