본문 바로가기
개념/혼자 공부하는 C언어

chapter 13) 주소를 반환하여 두 정수의 합 계

by kiseno 2024. 8. 31.
728x90
반응형
SMALL
#include <stdio.h>

int *sum(int a, int b);

int main(void){
    int *resp;

    resp = sum(10,20);
    printf("two integer sum : %d\n", *resp);

    return 0;
}

int *sum(int a, int b){
    static int res;
    res = a + b;
    return &res;
}

- **함수 선언**: `int *sum(int a, int b);`
  - `sum` 함수는 두 정수 `a`와 `b`를 매개변수로 받아, 그 합을 계산하고 결과의 주소를 반환합니다.

- **`main()` 함수**
  1. **포인터 변수 선언**: 
      - 정수형 포인터 변수 `resp`를 선언합니다. 이 변수는 나중에 `sum` 함수로부터 결과값의 주소를 받아 저장할 예정입니다.
  2. **함수 호출 및 결과 저장**:
      - `sum` 함수를 호출하면서, 정수 10과 20을 인자로 전달합니다. `sum` 함수는 이 두 수의 합을 계산한 뒤, 그 결과의 주소를 반환합니다.
      - 반환된 주소는 `resp` 포인터 변수에 저장됩니다.
  3. **결과 출력**:
      - `printf` 함수를 사용하여, `resp` 포인터 변수가 가리키는 값을 출력합니다. 출력된 값은 두 정수의 합, 즉 30이 됩니다.
  4. **프로그램 종료**:
      - `return 0;`을 사용하여 프로그램이 성공적으로 실행되었음을 나타내며, 프로그램을 종료합니다.

- **`sum` 함수**: `int *sum(int a, int b);`
  - 이 함수는 정적 지역 변수 `res`를 선언하고, 매개변수로 받은 두 정수의 합을 이 변수에 저장합니다.
  - 함수는 `res`의 주소를 반환합니다. 정적 지역 변수의 주소를 반환하는 것은 안전하며, 함수 호출이 끝난 후에도 변수 `res`는 메모리에 남아 있습니다.

728x90
반응형
LIST