2007. 3. 2. 11:49

return 은 두가지 역할을 합니다.

1. 함수의 실행을 끝냅니다.
2. 함수를 호출한 다른 함수나 시스템에게 어떤 값을 돌려줍니다.

return; // 이와 같이 값이 없이 그냥 return을 사용하면 돌려주는 값 없이 함수를 끝낸다는 의미입니다.

return 뒤에 따라오는 값은 함수의 선언 또는 정의와 일치해야 합니다.

int f(); // 함수가 정수형으로 선언되었습니다.

main()
{
    int i;
    i = f();                 // f() 함수가 돌려준 값을 i라는 변수에 넣습니다.
}

int f()                     // 함수의 정의 부분입니다. 역시 정수형입니다.
{
    return 3;             // 이 함수는 3이란 정수값을 돌려줍니다. 
                            // 여기에서 정수가 아닌 값을 돌려주려하면 에러가 됩니다.

}

void 로 선언된 함수는 return; 처럼 돌려주는 값이 없습니다.
그리고 함수의 끝부분에서는 return; 을 생략해도 함수가 끝납니다.
돌려주는 값이 있는 return은 생략할 수 없습니다.

void f(); // 돌려주는 값이 없는 함수입니다.

void f()
{

} // return; 이 생략되었습니다.

int main() 함수의 리턴값은 시스템(OS)이 받습니다.
예를 들어 윈도우즈에서 프로그램을 실행시키면 윈도우즈는
프로그램이
끝날 때 main()함수의 리턴값을 받아서 이 프로그램이 올바로 끝났는지 여부를 판단합니다.

하지만 main()함수는 void로 선언해도 상관 없습니다.
에러 처리는 시스템이 알아서 하니까 최근에는 void로 선언해서 사용합니다.

마지막으로 예전의 C언어에서는 void형 함수를 지원하지 않았습니다.
따라서 모든 함수는 무언가 리턴값이 있어야 했고, 프로그래머들은 필요 없는 리턴값을 코딩에 넣어야 했었습니다.

Posted by Paul Hwang