c, c++ 함수에서 리턴한 값이 main 함수로 어떻게 전달이 되는지 궁금합니다

조회수 432회
int number(int * x)
{
    return *x; // a의 값을 반환
}

int main()
{
    int a= 1;
    int b;
    b= number(&a);
}

이런 경우에는 변수 b에 다가 a 의 값을 복사해서 리턴을 하잖아요?

근데 복사가 언제 어떻게 실행이 돼서 반환이 되는지 궁금합니다

제 생각에는 return 키워드를 변수로 생각 했을 때

  1. int return = *x // a의 값을 복사
  2. main 함수에서 number(&a) 를 return 으로 대체하기

이런 식으로 생각 하면 될까요??

1 답변

  • C언어의 함수 첫줄은 아래와 같이 구성됩니다.

    반환값형식 함수이름(인수목록);
    

    int number(int* x)에서 반환값 형식은 int형입니다. 함수는 함수의 내부에서 함수를 호출한 위치로 특정 값을 반환해줄수 있는데, 그값을 반환값이라고 합니다. 만약, 반환값을 사용하고 싶지 않으면 반환값 형식을 void로 하면 됩니다. 그리고 함수내부에서 return 뒤에 값을 적으면 그 값이 반환값이 되어 함수를 호출한 곳으로 반환됩니다.

    따라서, main함수의 number(&a)가 호출되면, number 함수가 실행되고, number 함수 내부의 return 뒤의 값인 *x가 반환값이 되어서 메인문의 number(&a)의 위치로 반환됩니다. 반환값 형식이 int형이기 때문에, *x의 값인 숫자 1이 메인함수의 number(&a)위치에 반환되어 결국 b=number(&a)가 b=1이 됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)