"C ++ 입문서"읽기 노트 -07 장 함수 포인터

저자 : Ma Zhifeng
링크 : https : //zhuanlan.zhihu.com/p/23926784
출처 : 거의
저작권이 저자 에게 있음을 알고 있습니다. 상업적 재판의 경우 저자에게 연락하여 승인을 받으십시오. 비상업적 재판의 경우 출처를 표시하십시오.

성명서:

  • 기사의 내용은 "C ++ Primer Chinese Edition (5th Edition)"에서 수집 및 편집되었으며 저작권은 원서에 있습니다.
  • 원본 책은 더 자세하고 멋진 해석을 가지고 있으므로 학습용 정품 책을 구입하세요.
  • 이 기사는 학습과 의사 소통을위한 것이며 어떠한 형태의 전재도 금지되어 있습니다.

함유량

  • 함수 포인터 선언
  • 형식 매개 변수로서의 함수 포인터
  • 반환 값으로서의 함수 포인터

함수 포인터 선언

포인터는 특정 유형을 가리 킵니다. 그렇다면 함수 유형은 무엇입니까?

함수의 유형은 반환 유형형식 매개 변수유형에 의해 결정되며 함수 이름과 관련이 없습니다.

bool lengthCompare( const string&, const string& );

기능의 유형은 다음과 같습니다.

bool ( const string&, const string& )

그런 다음 다음 형식으로 함수 포인터를 선언 할 수 있습니다.

bool (*pf)( const string&, const string& );

함수 이름을 포인터로 바꿀 수 있습니다.

함수 포인터 사용

함수 포인터에는 다음과 같은 특수 기능이 있습니다.

  1. 함수 이름은 자동으로 포인터로 변환되며 주소 문자는 필요하지 않습니다.
  2. 함수에 대한 포인터를 직접 사용하여 함수를 호출 할 수 있으며 역 참조는 필요하지 않습니다.
pf = lengthCompare;  
pf = &lengthCompare;

이전

bool b1 = pf( "Hello", "goodbye" );  
bool b2 = (*pf)( "Hello", "goodbye" );  
bool b3 = lengthCompare( "Hello", "goodbye" );

함수 포인터 매개 변수

void useBegger( const string &s1, const string &s2,   
    bool pf( const string &, const string & ));  
void useBegger( const string &s1, const string &s2,   
    bool (*pf)( const string&, const string& ));

위의 두 함수는 모두 합법적입니다.
함수 포인터를 형식 매개 변수로 사용 하면 형식 매개 변수를 함수에 대한 포인터로
명시 적으로 정의 할
수 있습니다. 또한 함수 포인터로 자동 변환되는 함수 유형을 직접 사용할 수도 있습니다.

단순화를 위해 유형 별칭 또는 decltype 사용

//函数类型的别名  
typedef bool Func(const string&, const string&);    
typedef decltype(lengthCompare) Func2;  

//函数指针的别名
typedef bool(*FuncP)(const string&, const string &);  
typedef decltype(lenghtCompare) *FuncP2;

반환 함수 포인터

int (*f1(int))(int *, int);

이것은 복잡하고 이해하기 어렵게 보이며 단순화 할 수있는 많은 방법이 있습니다.

  1. 유형 별칭
  2. decltype
  3. 테일 리턴 유형

여기에서 처음 6 장의 내용을 읽었습니다!

나중에 할 몇 가지 연습을 찾을 것입니다. 현재 염두에두고있는 두 가지 측면이 있습니다.

  1. leetcode
  2. opencv 라이브러리를 사용하여 간단한 이미지 처리 수행

추천

출처blog.csdn.net/qq_26751117/article/details/53442412