[C언어] return 을 사용하여 함수에서 값 리턴하기

ET의 공부/C언어|2020. 12. 21. 20:27

이전 포스팅에서 함수의 자료형, 형식 매개변수에 대해 알아보았습니다. 이에 대한 링크는 아래와 같습니다.

by-man.tistory.com/564

 

[C언어] 함수의 전달인자

함수의 전달인자 이전 포스팅에서 데이터 형,전달인자가 없는 함수에대해 알아보았습니다. 해당 링크는 아래와 같습니다. by-man.tistory.com/563 [C언어] 함수의 작성과 사용 함수(function) C언어에서

by-man.tistory.com

 

이번 내용은 return을 사용하여 함수가 갖고 있는 값을 리턴하는 방법입니다. 

 

return

리턴 값이 없는 함수의 선언

함수에서는 전달인자를 통하여 호출 함수에서 피호출 함수로 값을 전달하게 됩니다. 반대로 값을 보내려면 return 값을 사용합니다.

 

함수의 데이터형

함수도 데이터형으로 선언해야 합니다. 리턴값이 있는 함수는 리턴 값과 같은 데이터 형으로 선언해야 합니다. 리턴 값이 없는 경우는 위 그림(리턴 값이 없는 함수의 선언)처럼 void자료형을 사용합니다. 

(자료형) 함수명 (매개변수){
	코드...
    return 반환값;
} //(자료형)과 반환값은 데이터형이 같아야 합니다.!

 

예제로 두 정수를 입력받아 큰수를 반환(리턴)하는 함수를 만들어 보겠습니다.

1. 두 정수를 입력 받는다.

2. 두 정수중 큰 수를 반환한다.

 

#include <stdio.h>

int Max(int a, int b); //함수 프로토 타입

int main () {
    int result;
    int a = 5;
    int b = 3;
    result = Max(a,b); //함수 호출
    printf("%d 와 %d중 큰 수는: %d 입니다.\n",a,b,result);

    return(0);
}

int Max(int a, int b){  //함수 정의
    return a>b?a:b;
}
//실행 결과
//5 와 3중 큰 수는: 5 입니다.

 

int Max(int a, int b); 정수형 a, b를 입력받아 정수형을 반환하는 함수를 선언합니다.

result = Max(a,b); 은 (정수형) result 변수에 Max() 함수의 반환 값을 대입합니다.

return a>b?a:b; 은 a, b 중 큰 정수를 반환합니다.

 

리턴 값의 사용

리턴 값은 변수에 대입할 수도 있지만 표현식의 일부로도 사용할 수 있습니다. 

printf("%d 와 %d중 큰 수는: %d 입니다.\n",a,b,result); //리턴 값을 변수에 대입하여 사용
printf("%d 와 %d중 큰 수는: %d 입니다.\n",a,b,Max(a,b)); //리턴 값을 표현식으로 사용

 

 

리턴의 사용 위치, 개수

return 의 또 다른 효과로는 함수를 종료시키고, 호출 함수에 있는 다음 문장으로 넘어가게 합니다. 이는 return 이 함수의 마지막(끝) 문장에 위치하지 않아도 동일한 효과를 냅니다.

int Max(int a, int b){  //함수 정의
    return a>b?a:b;
    printf("return 다음의 문장은 실행 될까요?");
}
//위의 printf는 실행이 되지 않습니다.

 

따라서 여러 리턴 값을 사용하여 코드를 작성할 수도 있습니다.

int Max(int a, int b){  //함수 정의
    if(a>b){
        return a;
    }
    else(b<a){
        return b;
    }
}

 

 

댓글()