C++의 특징이라고 한다면 포인터를 말할 수 있다.
그럼 함수도 포인터로 이용할 수 있지 않을까??

정의

포인터는 다른 변수의 주소를 저장하는 변수이다.
함수 포인터는 다른 함수의 주소를 저장하는 변수이다!

사용 방법은
반환 타입 (*변수이름) (매개변수)
int (*cir)(int, int); 

함수 포인터로 계산기를 만들어보면서 설명하겠습니다.

코드

#include <iostream>

#pragma warning(disable: 4996)

void plus(int _v1, int _v2)
{
	std::cout << _v1 + _v2 << std::endl;
}

void minus(int _v1, int _v2)
{
	std::cout << _v1 - _v2 << std::endl;
}

void multiple(int _v1, int _v2)
{
	std::cout << _v1 * _v2 << std::endl;
}

void divide(int _v1, int _v2)
{
	std::cout << _v1 / _v2 << std::endl;
}

int main()
{
	void(*cir)(int, int) = nullptr;
	int value = 0;
	char sign = 0;
	int value2 = 0;

	scanf("%d %c %d", &value, &sign, &value2);

	switch (sign)
	{
	case '+' :
		cir = &plus;
		break;
	case '-':
		cir = &minus;
		break;
	case '*':
		cir = &multiple;
		break;
	case '/':
		cir = &divide;
		break;
	default:
		break;
	}
	cir(value,value2);
	return 0;
}

반환 타입 (*변수이름) (매개변수)

void(*cir)(int,int);

cir 함수 포인터는 반환 값 void 매개변수가 int, int가 들어오는 함수를 담을수가 있다.

scanf로 value, sign, value에 값을 받은뒤

switch문으로

사칙 연산에 해당하는 case문으로 이동후

cir 함수 포인터에 각 계산식에 맞는 함수의 포인터를 넣어주면 된다!.

cir 은 plus를 가리킬수도있고!

minus, multiple, divide를 다 가리킬수있다!

 

 

+ Recent posts