C 언어 에서 함수 포인터 용법 에 대한 잡담
1.함수 포인터 사용:
먼저 아래 세 가지 함수 의 성명 방식 을 보십시오.
A)
char
* (*fun1)(
char
* p1,
char
* p2);
B)
char
* *fun2(
char
* p1,
char
* p2);
C)
char
* fun3(
char
* p1,
char
* p2);
A 는 전형 적 인 함수 포인터 사용 방식 으로 B 와 C 는 모두 정상 적 인 함수 성명 이 고 뒤의 두 가지 차이 점 은 돌아 오 는 char*형,돌아 오 는 char*형 에 있다.
fun 1 여기 서 입구 매개 변 수 를 가리 키 는 것 은(char*,char*)형 이 고 반환 값 은 char*형의 함수 입 니 다.
이 때 함 수 를 새로 만 들 면:char*Fun(char*,char*);그러면 이렇게 조작 할 수 있 습 니 다:fun 1=Fun;
2.반전 함수 의 실현:
예 를 들 어 직렬 수신 인 터 럽 트 에서 함 수 를 호출 하여 직렬 수신 바이트 데 이 터 를 전달 하고 자 합 니 다.실현 하 는 방식 은 다음 과 같 습 니 다.
우선 함수 포인터 설명:
static void (*HAL_UartRx_CB)(uint8_t rdata) = (void*)0;
그 다음 에 리 셋 함수 의 등록 인 터 페 이 스 를 제공 하고 지난 단계 에 설명 한 함수 포인터 와 입구 매개 변 수 를 연결 합 니 다.
void HAL_AssignRxISR(void Rx_ISR(uint8_t data))
{
HAL_UartRx_CB = Rx_ISR;
}
마지막 으로 직렬 수신 인 터 럽 트 에서 이 정 의 된 함 수 를 호출 하면 됩 니 다.
interrupt void Uart_Rx_ISR(void)
{
/* Call Rx callback function when receive one byte data .*/
if(HAL_UartRx_CB != ((void*) 0)
{
HAL_UartRx_CB(&RxData);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어 간단한 파일 r/w 조작 방법데이터의 입력과 출력은 거의 모든 C 언어 프로그램과 수반된다. 입력이란 원본에서 데이터를 얻는 것이다. 출력은 단말기에 데이터를 쓰는 것으로 이해할 수 있다.이곳의 원본은 키보드, 마우스, 하드디스크, 시디, 스캐...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.