저자 : Ma Zhifeng
링크 : https : //zhuanlan.zhihu.com/p/23926784
출처 : 거의
저작권이 저자 에게 있음을 알고 있습니다. 상업적 재판의 경우 저자에게 연락하여 승인을 받으십시오. 비상업적 재판의 경우 출처를 표시하십시오.
링크 : 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& );
함수 이름을 포인터로 바꿀 수 있습니다.
함수 포인터 사용
함수 포인터에는 다음과 같은 특수 기능이 있습니다.
- 함수 이름은 자동으로 포인터로 변환되며 주소 문자는 필요하지 않습니다.
- 함수에 대한 포인터를 직접 사용하여 함수를 호출 할 수 있으며 역 참조는 필요하지 않습니다.
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);
이것은 복잡하고 이해하기 어렵게 보이며 단순화 할 수있는 많은 방법이 있습니다.
- 유형 별칭
- decltype
- 테일 리턴 유형
여기에서 처음 6 장의 내용을 읽었습니다!
나중에 할 몇 가지 연습을 찾을 것입니다. 현재 염두에두고있는 두 가지 측면이 있습니다.
- leetcode
- opencv 라이브러리를 사용하여 간단한 이미지 처리 수행