🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

함수 기초 질문입니다!

24.05.20 14:21 작성 조회수 67

0

  1. 반환타입은 무조건 있어야 하고 매개변수는 사용해도, 안해도 상관이 없다고 하셨는데, 혹시 그 이유에 대해서 여쭤볼 수 있을까요? (반환타입을 무조건 사용해야하는 이유와 매개변수를 사용해도 안해도 상관없는 이유)

  2. 반환타입이 void 일 경우, return은 사용해도 안해도 된다고 하셨습니다. 만약, 반환타입이 int, float, char 등일 경우에는 무조건 return을 사용해야 할까요?

답변 1

답변을 작성해보세요.

0

제가 수학 전공은 아니지만 함수라는 것을 정의할때 보통 임의의 입력값이 주어졌을때 어떤 출력값을 만들어내는 것을 우리가 함수라고 하죠. 그 개념이 프로그래밍 언어에서도 거의 동일하다고 보시면 될 것 같습니다.

C++의 함수에서 '입력값'은 매개변수로 전달되는 값들을 의미하고 출력값은 return ....; 문장을 통해 반환되는 값을 의미한다고 보시면 됩니다. 그러나 질문하신것처럼 함수에서 매개변수로 전달된 입력값을 반드시 사용해서 무언가를 해야한다는 보장은 없습니다.

예시를 들어볼께요.

int CreateRandomInteger(int a, int b)

{

return a * rand() + b; // rand() 함수는 랜덤 값을 반환하는 c 표준 라이브러리 함수입니다.

}

int CreateRandomInteger2(int a, int b)

{

return rand() * 10 % 23; // 랜덤한 수를 만들어내기 위한 연산 (a, b는

// 랜덤한 숫자를 만들어내는데 사용되지 않았음.)

}

두 함수의 차이점은 위의 함수는 매개변수로 전달된 a, b를 함수 내에서 무언가를 하는데 사용되었고 아래의 함수는 매개변수로 전달된 입력값 a, b를 사용하지 않았습니다.

이처럼 매개변수를 사용하는가 사용하지 않는가의 문제는 함수를 만드는 프로그래머의 선택에 달려있는 것이죠.

(그러나 보통 저렇게 전달된 매개변수를 아예 사용하지 않는 함수를 작성하는 경우는 드물다고 보시면 됩니다. 아예 없다고는 못하겠네요.)

 

 

그리고 두번째 질문은 알고 계신게 맞습니다. 반환 타입이 void인 함수에서는 return을 써도 되고 안써도 됩니다. 다만 void 반환 함수에서도 함수 흐름 중간에 예외 처리 등으로 인해 함수를 빠져나가야 할 때 return; 이 얼마든지 사용될 수 있습니다. void 타입 이외에 다른 타입들(int, char, float, 포인터 또는 C++ 클래스 객체등)을 반환하는 함수들은 반드시 return (???);을 통해 반환하는 것이 존재해야 합니다. 실수로 return을 빼먹더라도 컴파일 오류가 발생하니 이 부분은 실수하시더라도 큰 걱정 안하셔도 됩니다!

채널톡 아이콘