C언어 마스터가이드 함수의 반환형이 함수챕터의 마지막 내용입니다.

 

함수 챕터만 보면 함수를 다 알 수 있는게 아니라 후반부에 함수를 포인터와 연계해서 어떻게 사용해야 하느냐까지 알아야 되는 부분입니다.

 

C++에 가면 객체지향의 오버라이드, 다형성 같은 특징에 대해서도 이해할 수 있어야 되니까요. 함수 챕터를 듣고 함수를 다 안다고 자부하면 곤란한 부분입니다. 함수 자체를 C언어 프로세스 그 자체로 볼 수도 있습니다.

 

main 함수에서 시작해서 main 함수에서 끝나는 것은 C언어는 함수라는 것과도 같습니다.

 

챕터를 분리시켜서 가르치는 것은 그게 의미상 분명하기 때문입니다. 그러나 인사이트는 이것도 알고 저것도 알고 하는 가운데 종합적인 시각이 생겼을 때 나옵니다.

 

함수의 앞쪽에 대한 내용은 아래 포스트를 참고합니다. 여기서는 함수의 반환형에 대해 이야기합니다.

 

 

C언어 함수(function) 1 | C언어 마스터 가이드 4

이번 포스팅 내용은 함수입니다. 함수의 문법적인 내용이 아니고 함수에 대한 여러가지 질문들에 대하여 각종 자료를 기반으로 고찰하는 내용입니다. C언어 함수(function) 사람에 따라서는 함수

digiconfactory.tistory.com

 

C언어 함수(function) 2 매개변수, 블랙박스 | C언어 마스터 가이드 5

C언어 함수(function) 지난 포스팅에 이어 C언어 함수에 대한 내용입니다. C언어 마스터 가이드라고 감히 이름 붙인 만큼 내용이 만족스럽지는 않네요. 허나 시작을 했으니 죽이되던 밥이되던 끝까

digiconfactory.tistory.com

 

함수는 하나의 지역변수를 스택에 유지한다고 했습니다.

 

함수가 호출되면 스택 메모리를 할당받아 지역변수에 들어갔다가 나오면서 소멸됩니다.

 

이 때문에 함수에서 처리한 값을 보존할 방법이 필요한 것이죠.

 

값을 반환받는 것이 가장 기본이 됩니다.

 

#include <stdio.h>

#define Line printf("------------------------\n")

int myMax(int a, int b);

int main()
{

    Line;
    int result = myMax(4, 2);
    printf(" myMax(4,2) = %d\n", result);

    result = myMax(3, 7);
    printf(" myMax(3,7) = %d\n", result);

    return 0;
}

int myMax(int a, int b)
{
    
    return (a > b ? a : b);

}

 

 

위 코드에서는 두개 수에서 큰 수를 반환합니다.

 

매개변수가 int 반환형이 int 인 것은 당연한 이치인데 정수를 비교하기 때문입니다.

 

int는 32비트로 약 -21억에서 +21억까지 범위의 수 입니다.

 

myMax 함수는 두개의 int 형 값을 전달받아서 처리한 후에 더 큰 쪽을 int 형으로 반환합니다.

 

만약 매개변수와 반환형이 다르다면 형변환이 필요합니다.

 

그런 문제를 피하기 위해서 같은 자료형을 사용했습니다.

 

원리는 꽤 명확하지만 막상 적용해 보면 어려움이 있겠죠?

 

예를 들어서 int 형으로 받았는데 float 형으로 나가는 경우나 int 형에서 long 형, int 형에서 char 형 등 자료형의 경우의 수 만큼 달라집니다.

 

모든 경우의 수를 표로 만들어 달달 외울 수 도 있을 것입니다.

 

그보다 좋은 방법은 그렇게 하지 않고 일반적인 논리를 배우는 것이죠.

 

형변환은 여기서는 주제를 벗어나기 때문에 설명하지 않겠습니다만,

 

중급단계를 뛰어넘기 위해서는 그런 부분을 파고 들어야 합니다.

 

C언어 마스터 가이드를 작성하는 것은 인터넷에 IT관련 포스팅이 많아도

 

아직까지 다양하지 못하고 코드의 복붙이 많습니다.

 

해외 영어사이트를 보면 그런게 참 잘되어있는데 이건 한글 사용자가 적어서 생기는 일인 것 같기도 하구요.

 

어쨋든 그렇습니다.

 

 

 

해서 잡설은 여기까지 하고 함수의 반환형은 매개변수와도 관계가 있다는 부분이고요,

 

매개변수가 아니더라도 또 함수를 호출한 쪽에서 (예를 들어 main) 같은 자료형으로 받아줘야합니다.

 

하다보면 자동으로 형변환이 이루어집니다.

 

자동이라서 신경쓰지 않고 지나가기 쉬운데 C언어에서는 웬만하면 명시적으로 하는게 좋고

 

불필요한 형변환은 최소화하는게 좋을 것 같습니다.

 

 

함수에 대하여는 여기까지 하겠습니다. 재귀 등의 이슈가 남아있지만 함수는 C언어 전체에 걸쳐서 사용되는 형식인 만큼 함수 단원에서 모든 것을 끝내려는 것은 좀 별로 일 것 같네요.

 

재귀는 나중에 하도록 하겠습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band