C++의 함수 포인터
전제 조건:
포인터는 주소를 상징적으로 표현한 것입니다. 이를 통해 프로그램은 참조별 호출을 시뮬레이션하고 동적 데이터 구조를 생성 및 조작할 수 있습니다. 배열이나 기타 데이터 구조의 요소를 반복하는 것은 포인터의 주요 용도 중 하나입니다.
작업 중인 변수의 주소는 동일한 데이터 유형(예: int 또는 string)을 가리키는 포인터 변수에 할당됩니다.
통사론 :
datatype *var_name;
기능 주소: 우리 모두는 모든 함수의 코드가 메모리에 상주한다는 것을 알고 있으므로 모든 함수는 프로그램의 다른 모든 변수와 마찬가지로 주소를 갖습니다. 함수의 이름을 사용하여 함수의 주소를 찾을 수 있습니다. 함수에 괄호 없이 함수 이름만 쓰면 함수의 주소를 얻을 수 있습니다.
이에 대한 자세한 내용은 기사 – 함수 주소를 참조하십시오.
C++의 함수 포인터
- 함수 포인터는 함수를 가리키는 데 사용됩니다. 마찬가지로 포인터는 변수를 가리키는 데 사용됩니다.
- 함수의 주소를 저장하는데 활용됩니다.
- 함수 포인터는 함수를 호출하는 데 사용되거나 다른 함수에 인수로 전송될 수 있습니다.
C++의 함수 포인터
통사론 :
return_type (*FuncPtr) (parameter type, ....);
C++에서 함수 포인터 참조 및 역참조
변수와 함께 사용되는 포인터와 유사하게 함수 포인터를 사용하여 참조 및 역참조를 수행합니다.
참조: 포인터에 연결할 함수의 주소가 할당되면 이 프로세스를 참조라고 합니다.
역참조: (*) 연산자를 사용하여 포인터에 저장된 값을 가져올 때.
통사론:
// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr;
함수를 호출하는 데 사용되는 함수 포인터
여기서는 함수에 대한 포인터를 가리키고 해당 포인터를 사용하여 함수를 호출하는 방법을 살펴보겠습니다. 효율적인 활용방법입니다
예:
C++
// C++ program to implementation> // Function Pointer> #include> using> namespace> std;> int> multiply(> int> a,> int> b) {> return> a * b; }> int> main()> {> > int> (*func)(> int> ,> int> );> > // func is pointing to the multiplyTwoValues function> > func = multiply;> > int> prod = func(15, 2);> > cout < <> 'The value of the product is: '> < < prod < < endl;> > return> 0;> }> |
산출
The value of the product is: 30
위 프로그램에서 우리는 두 요소 a와 b를 곱한 다음 결과를 반환하는 곱셈 함수를 선언합니다. 그러나 함수를 직접 호출하는 대신 동일한 작업을 수행하는 함수 포인터 prod를 사용하고 있습니다.
함수 포인터를 매개변수로 전달하기
함수의 메모리 주소를 저장하기 위해 함수 포인터를 선언했지만 반환 값을 다음 함수에 전달하려는 경우. 이 작업을 수행하는 방법에는 두 가지가 있습니다. 먼저, 우리가 얻은 값을 전달하거나 두 번째로 이미 존재하는 함수 포인터를 전달합니다.
예:
C++
// C++ Program for demonstrating> // function pointer as pointer> #include> using> namespace> std;> const> int> a = 15;> const> int> b = 2;> // Function for Multiplication> int> multiply() {> return> a * b; }> // Function containing function pointer> // as parameter> void> print(> int> (*funcptr)())> {> > cout < <> 'The value of the product is: '> < < funcptr()> > < < endl;> }> // Driver Function> int> main()> {> > print(multiply);> > return> 0;> }> |
산출
The value of the product is: 30
시간 복잡도: 오(1).
보조 공간: 오(1).
위 프로그램에서는 두 변수 a와 b를 곱하는 곱셈 함수를 선언합니다. 함수 포인터를 인쇄 함수의 매개변수로 전달합니다. 여기서는 함수 포인터를 사용하여 곱셈 함수의 값을 계산한 다음 인쇄 함수의 해당 값을 계산합니다.