C++프로 그래 밍 의 함수 포인터 초기 분석

2579 단어 C++함수 포인터
1.정의
모든 함수 가 메모리 셀 을 차지 합 니 다.시작 주 소 를 가지 고 함수 입구 주 소 를 가리 키 는 지침 을 함수 지침 이 라 고 합 니 다.
2.문법
함 수 를 가리 키 는 포인터 변수의 일반적인 정의 형식 은:
데이터 형식(*포인터 변수 이름)(매개 변수 표);
3.설명
1)함수 포인터 의 정의 형식 중의 데이터 형식 은 함수 의 반환 값 의 유형 을 가리킨다.
2)다음 두 문장 을 구분한다.

int (*p)(int a, int b); //p            ,             

int *p(int a, int b); //p    ,              
3)함 수 를 가리 키 는 포인터 변 수 는 어떤 함 수 를 고정 적 으로 가리 키 는 것 이 아니 라 이러한 유형의 변 수 를 정 의 했 을 뿐 함수 의 입구 주 소 를 저장 하 는 데 사 용 됩 니 다.프로그램 에서 어떤 함수 의 주 소 를 부여 하면 어떤 함 수 를 가리 키 는 지 알려 줍 니 다.
4)함수 포인터 변수 에 값 을 부여 할 때 함수 이름 만 제시 하고 인 자 를 주지 않 아 도 됩 니 다.
예 를 들 어 함수 max 의 원형 은 int max(int x,int y)입 니 다.포인터 p 의 정 의 는 int(*p)(int a,int b)입 니 다.p=max;함수 max 의 입구 주 소 를 포인터 변수 p 에 부여 하 는 역할 을 합 니 다.이때 p 는 함수 max 를 가리 키 는 포인터 변수,즉 p 와 max 는 모두 함수 의 시작 을 가리킨다.
5)한 프로그램 에서 포인터 변수 p 는 선후 로 서로 다른 함 수 를 가리 킬 수 있 지만 한 함수 가 일치 하지 않 는 함수 포인터(즉,함수 포인터 가 그 유형 과 일치 하지 않 는 함 수 를 가리 키 지 못 하 게 하 는 것)를 부여 할 수 없습니다.
다음 함수 가 있 으 면:

int fn1(int x, int y); int fn2(int x);
다음 함수 포인터 정의:

int (*p1)(int a, int b); int (*p2)(int a);
...하면

p1 = fn1; //  
p2 = fn2; //  
p1 = fn2; //      
6)함수 포인터 하 나 를 정의 하고 함 수 를 가리 키 면 함수 이름 으로 호출 할 수도 있 고 함수 포인터 로 호출 할 수도 있 습 니 다.
예 를 들 어:c=(*p)(a,b);/p 가 가리 키 는 함수(max)를 호출 하고 실제 인삼 은 a,b 이 며 함수 호출 이 끝 난 후에 얻 은 함수 값 은 c 에 부여 합 니 다.
7)함수 지침 은 함수 의 입구 만 가리 킬 수 있 을 뿐 함수 중간의 어떤 명령 을 가리 킬 수 없다.함수 의 다음 명령 을*(p+1)로 표시 할 수 없습니다.
8)함수 포인터 변수 가 자주 사용 하 는 용도 중 하 나 는 포인터 를 매개 변수 로 다른 함수 에 전달 하 는 것 이다.
4.예시

// MethodPoint.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;

typedef int (*pf)(const int& a,const int& b);

int sum(const int& a,const int& b){
  return a + b;
}

int minus(const int& a,const int& b){
  return a - b;
}

int doSometing(const int& a,const int& b, pf p){
  return p(a, b);
}

int _tmain(int argc, _TCHAR* argv[])
{
  cout << doSometing(1, 2, &sum) << endl;
  cout << doSometing(1, 2, &minus) << endl;
  system("pause");
  return 0;
}

결과:
2016420141308537.jpg (273×157)

좋은 웹페이지 즐겨찾기