[코딩&디버깅] 모의고사01회 6번

Posted by nkjok
2025. 2. 13. 19:16 낙서장[2]/코딩&디버깅
반응형
#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 함수를 호출하고, 그 결과를 출력합니다.

 

디버깅 단계

  1. 헤더 파일 포함이 줄은 표준 입출력 함수를 사용하기 위해 필요한 헤더 파일을 포함합니다.
    #include <stdio.h>
    
  2. 함수 정의두 함수를 정의합니다. add 함수는 두 정수를 더하고, sub 함수는 두 정수를 뺍니다.
    int add(int i, int j) {
        return i + j;
    }
    
    int sub(int i, int j) {
        return i - j;
    }
    
  3. 메인 함수
    • 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;
}
반응형

'낙서장[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