C++ 함수: 초보자를 위한 종합 가이드

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 C++ 함수의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 이 기본 개념을 안내해드리겠습니다. 이 개념은 여러분의 코드 작성 방식을 혁명적으로 바꿔줄 것입니다. 그러니 가상의 자리에 앉아, 함께 들어보세요!

C++ Functions

함수는 무엇인가요?

코딩을 시작하기 전에 함수가 무엇인지 이해해보겠습니다. 쿠키를 만들 때를 상상해보세요(음!). 매번 레시피를 새로 만드는 것은 아니죠? 레시피를 따르는 것처럼, 프로그래밍에서 함수는 특정 작업을 수행하는 재사용 가능한 코드 블록입니다.

함수 정의하기

C++에서 함수를 만드는 기본 방법을 알아보겠습니다.

returnType functionName(parameterList) {
// 함수 본문
// 실행할 코드
return value; // 선택 사항
}

각 부분의 의미는 다음과 같습니다:

  • returnType: 함수가 반환할 데이터 타입(예: int, float, void 등)
  • functionName: 함수에 부여할 고유한 이름
  • parameterList: 함수가 필요로 하는 입력值(선택 사항)
  • 함수 본문: 작업을 수행하는 실제 코드
  • return value: 함수가 생성하는 결과(적용 가능)

예제: 첫 번째 함수

사람을 인사하는 간단한 함수를 만들어보겠습니다:

#include <iostream>
#include <string>
using namespace std;

void greet(string name) {
cout << "Hello, " << name << "! Welcome to C++ functions!" << endl;
}

int main() {
greet("Alice");
return 0;
}

이 코드를 실행하면 다음과 같은 출력이 나타납니다:

Hello, Alice! Welcome to C++ functions!

이를 설명하자면:

  1. greet이라는 함수를 정의했으며, 이 함수는 string 타입의 파라미터 name을 받습니다.
  2. 함수는 아무것도 반환하지 않기 때문에 void를 반환 타입으로 사용합니다.
  3. 함수 내부에서는 제공된 이름을 사용하여 인사 메시지를 출력합니다.
  4. main 함수에서 greet를 "Alice" argument로 호출합니다.

함수 선언

occasionally, you might want to declare a function before defining it. This is called a function prototype. It's like telling C++, "Hey, I'm going to create this function later, but I want you to know about it now."

// 함수 선언
int add(int a, int b);

int main() {
int result = add(5, 3);
cout << "5 + 3 = " << result << endl;
return 0;
}

// 함수 정의
int add(int a, int b) {
return a + b;
}

이는 더 큰 프로그램에서 주로 사용되며, 함수를 main 함수 후나 별도의 파일에서 정의할 때 유용합니다.

함수 호출

이전 예제에서 함수 호출 방법을 보았지만, 조금 더 깊이 탐구해보겠습니다. 함수를 호출할 때, 프로그램은 해당 함수의 코드로 이동하여 그것을 실행하고 실행이 끝나면 원래 위치로 돌아갑니다.

#include <iostream>
using namespace std;

void countDown(int start) {
for(int i = start; i > 0; i--) {
cout << i << "... ";
}
cout << "Blast off!" << endl;
}

int main() {
cout << "Initiating countdown:" << endl;
countDown(5);
cout << "Rocket has launched!" << endl;
return 0;
}

이는 다음과 같은 출력을 생성합니다:

Initiating countdown:
5... 4... 3... 2... 1... Blast off!
Rocket has launched!

여기서 main 함수 내에서 countDown 함수를 호출하면, 프로그램은 countDown 함수를 실행하고 그 후 main 함수의 나머지 부분으로 돌아갑니다.

함수 인수

함수는 여러 개의 인수를 받을 수 있어 더 유연하고 강력하게 사용할 수 있습니다.

#include <iostream>
using namespace std;

int calculateRectangleArea(int length, int width) {
return length * width;
}

int main() {
int area = calculateRectangleArea(5, 3);
cout << "The area of a 5x3 rectangle is: " << area << endl;
return 0;
}

이 함수는 두 개의 인수(길이와 너비)를 받아 그 제곱을 반환합니다.

파라미터 기본 값

C++는 함수 파라미터에 기본 값을 설정할 수 있습니다. 이는 함수 호출 시 값이 제공되지 않을 때 기본 값을 사용하게 합니다.

#include <iostream>
using namespace std;

void printPowerLevel(string name, int level = 9000) {
cout << name << "'s power level is " << level << "!" << endl;
}

int main() {
printPowerLevel("Goku", 8000);
printPowerLevel("Vegeta");  // 기본 값을 사용
return 0;
}

이는 다음과 같은 출력을 생성합니다:

Goku's power level is 8000!
Vegeta's power level is 9000!

이 예제에서 printPowerLevel 함수는 기본적으로 level 값을 9000으로 설정했습니다. 따라서 level 값이 명시되지 않으면 9000을 사용합니다.

함수 오버로딩

C++는 같은 이름의 여러 개의 함수를 가질 수 있으며, 그들의 파라미터 목록이 다를 때는 함수 오버로딩을 허용합니다.

#include <iostream>
using namespace cout;

int add(int a, int b) {
return a + b;
}

double add(double a, double b) {
return a + b;
}

int main() {
cout << "Adding integers: " << add(5, 3) << endl;
cout << "Adding doubles: " << add(3.14, 2.86) << endl;
return 0;
}

이 코드는 두 개의 add 함수를 정의합니다 - 하나는 정수를 위한 것이고 다른 하나는 실수를 위한 것입니다. C++는 인수 타입에 따라 올바른 함수를 호출합니다.

일반 C++ 함수 메서드

다음은 일반적으로 사용되는 몇 가지 C++ 함수 메서드입니다:

메서드 설명 예제
max() 두 개의 값 중 큰 값을 반환 max(5, 10)는 10을 반환
min() 두 개의 값 중 작은 값을 반환 min(5, 10)는 5를 반환
abs() 절대 값을 반환 abs(-5)는 5를 반환
pow() 수를 지수로 거는 pow(2, 3)는 8을 반환
sqrt() 제곱근을 반환 sqrt(25)는 5를 반환
round() 가장 가까운 정수로 둥글다 round(3.7)는 4를 반환
ceil() 가장 가까운 큰 정수로 올림 ceil(3.2)는 4를 반환
floor() 가장 가까운 작은 정수로 내림 floor(3.8)는 3를 반환

이러한 수학 함수를 사용하려면 <cmath> 헤더를 프로그램에 포함해야 합니다.

이제 C++ 함수의 세계로 첫 걸음을 뗐습니다. 연습이 완벽을 만든다는 것을 기억하고, 이 개념들을 실험해보세요. 행복한 코딩 되세요, 여러분의 함수가 항상 기대하는 결과를 반환하길 바랍니다!

Credits: Image by storyset