[코딩&디버깅] 모의고사01회 6번
반응형
#include <stdio.h>
int add(int i, int j) {
return i + j;
}
int sub(int i, int j) {
return i - j;
}
int main() {
int (*pf)(int, int);
pf = add;
printf("%d", pf(5, 4)); // add 함수 호출 결과: 9
pf = sub;
printf("%d", pf(5, 4)); // sub 함수 호출 결과: 1
return 0;
}
디버깅 과정
먼저 작성하신 코드는 두 개의 함수와 하나의 함수 포인터를 사용하여 두 개의 정수를 더하고 빼는 작업을 수행합니다.
- add 함수는 두 정수를 더합니다.
- sub 함수는 두 정수를 뺍니다.
- main 함수에서는 함수 포인터 pf를 사용하여 add 함수와 sub 함수를 호출하고, 그 결과를 출력합니다.
디버깅 단계
- 헤더 파일 포함이 줄은 표준 입출력 함수를 사용하기 위해 필요한 헤더 파일을 포함합니다.
#include <stdio.h>
- 함수 정의두 함수를 정의합니다. add 함수는 두 정수를 더하고, sub 함수는 두 정수를 뺍니다.
int add(int i, int j) { return i + j; } int sub(int i, int j) { return i - j; }
- 메인 함수
- int (*pf)(int, int)는 함수 포인터 pf를 선언합니다. 이 포인터는 두 개의 int 인수를 받아들이고 int를 반환하는 함수들을 가리킬 수 있습니다.
- pf = add;를 통해 pf가 add 함수를 가리키도록 합니다.
- printf("%d", pf(5, 4));를 통해 pf가 가리키는 add 함수를 호출하고 그 결과를 출력합니다. 이 경우 결과는 9입니다.
- pf = sub;를 통해 pf가 sub 함수를 가리키도록 합니다.
- printf("%d", pf(5, 4));를 통해 pf가 가리키는 sub 함수를 호출하고 그 결과를 출력합니다. 이 경우 결과는 1입니다.
int main() { int (*pf)(int, int); pf = add; printf("%d", pf(5, 4)); // add 함수 호출 결과: 9 pf = sub; printf("%d", pf(5, 4)); // sub 함수 호출 결과: 1 return 0; }
3. 디버깅 포인트
- 함수 포인터 pf가 올바르게 설정되었는지 확인합니다.
- 각 함수 호출 결과가 의도한 대로 출력되는지 확인합니다.
- 프로그램이 성공적으로 종료되는지 확인합니다.
출력 결과
위 코드의 실행 결과는 다음과 같습니다:
91
첫 번째 printf 문에서 add 함수가 호출되어 9가 출력되고, 두 번째 printf 문에서 sub 함수가 호출되어 1이 출력됩니다. 따라서 최종 출력은 91이 됩니다.
코드 전체
다시 한 번 전체 코드를 참고하세요:
c
#include <stdio.h>
int add(int i, int j) {
return i + j;
}
int sub(int i, int j) {
return i - j;
}
int main() {
int (*pf)(int, int);
pf = add;
printf("%d", pf(5, 4)); // add 함수 호출 결과: 9
pf = sub;
printf("%d", pf(5, 4)); // sub 함수 호출 결과: 1
return 0;
}
![](https://blog.kakaocdn.net/dn/RY4X9/btsMgTns6en/Fo6ZzJzVVdNdWBsH1HFRsK/img.png)
반응형
'낙서장[2] > 코딩&디버깅' 카테고리의 다른 글
[JAVA] 나머지 구하기 (2) | 2025.01.22 |
---|---|
[JAVA] 몫 구하기 (0) | 2025.01.22 |
[JAVA] 숫자 비교하기 (1) | 2025.01.21 |
[JAVA] 두 수의 합 (0) | 2025.01.21 |
[JAVA] 두 수의 차 (0) | 2025.01.21 |