티스토리 뷰

return은 무엇을 뜻하나요? 함수인가요?


return 은 함수가 아니라, C언어에서 미리 정해놓은(예약한) 명령어라고 보시면 됩니다.
C언어의 키워드(keyword), 즉 미리 쓰기로 한 말이죠. 전문용어로 "예약어"라고 부릅니다.

return은 함수는 아닙니다.
만약 return이 함수였다면 return()으로 사용했을 것입니다.
(C언어에서 함수를 사용하기 위해서는 일반적으로 뒤에 소괄호()를 붙여 사용하기 때문입니다.)



return의 의미는?


return은 다음과 같은 경우에 주로 사용합니다.


1. 현재의 함수에서 빠져 나가 그 함수를 호출했던 곳으로 되돌아 가라는 뜻입니다.
되돌아 가면서 그 함수를 호출했던 곳 즉 calling routine 에 어떤 값을 반환하는 것입니다.

return 0; 는 0 이라는 값을 반환하라는 의미이고
return 1; 은 1 이라는 값을 반환하라는 뜻입니다.

return 은 함수의 어떤 곳에서도 위치할 수 있는데, return 이 실행되는 즉시 그 함수는 무조건 실행이 종료됩니다.
즉, 현재의 함수에서 빠져 나가라는 의미입니다.

아래의 코드를 보시기 바랍니다.
return 0;을 만난 경우 main 함수를 빠져나가게 됩니다.

#include<stdio.h>

int main()
{
   return 0;
}


여기서 return 을 만나면 함수를 종료하게 됩니다.

그런데 위에서 return 뒤에 0을 써주는 이유는 무엇일까요?


2. return은 함수 내의 변수 또는 일정값을 되돌려 주는 역할을 합니다.

* 계산이 아닌, 어떤 일을 하는 함수라면, 그 일이 성공했을 때에는 0 을, 실패했을 때에는 1 을 반환하며 끝내는 것이 보통입니다.
그러면 그 함수를 호출한 곳에서, 그 함수가 제대로 실행되었는지 판단할 수가 있습니다.


#include <stdio.h>

int main() {
  printf("안녕하세요.");

  return 0;
}


위의 예제를 실행하면 안녕하세요를 출력하는 프로그램입니다.

앞서 프로그램이 성공적으로 실행되었을 때 return 0;으로 0을 돌려준다고 말씀드렸지요?
함수를 호출 했을 때 리턴값으로 0을 돌려받는다면 '아 정상적으로 끝났구나' 생각하면 됩니다.

우리가 누군가에게 심부름을 시켰을 때 "그 일 잘 해결했어요" 라고 듣는 것과 똑같습니다.


그런데 어떤 분들은 이렇게 묻곤 합니다.
그러면 return 0; 이후에는 어떻게 되나요?
누구에게 0을 반환하는 건가요? 라고 말입니다.

위 소스는 간단하지만 하나의 프로그램입니다.
안녕하세요를 출력하는 간단한 프로그램이지요.

return 0;을 통해 main() 함수를 종료한다는 것은 그 프로그램을 종료시킨다는 의미입니다.



main() 함수를 호출한 루틴은, 컴퓨터 OS 그 자체이므로, 결국 OS에 0 이라는 값을 반환하는 것입니다. 이것을 도스/윈도우에서는 "Error Level" 이라고 합니다. 윈도의 명령 프롬프트에서,

echo %ERRORLEVEL%

이라고 치면, return이 방금 반환한 그 값을 볼 수 있습니다. 이 경우에는 0 이라는 값이 화면에 출력됩니다. 



댓글