학습
C++ 함수 정의 및 호출
C++ 함수 정의 및 호출 — 초급
함수 정의 및 호출
1. 도입 (왜 배워야 하는가)
C++에서 함수는 프로그램을 구성하는 기본 단위입니다. 함수는 특정 작업을 수행하는 코드 블록으로, 이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다. 실무에서는 복잡한 프로그램을 작성할 때 여러 기능을 나누어 관리하는 것이 필수적입니다. 만약 함수를 사용하지 않는다면, 코드가 길어지고 반복되는 부분이 많아져 유지보수가 어려워집니다. 예를 들어, 쇼핑몰 애플리케이션에서 가격 계산 기능을 여러 번 작성한다면, 코드의 중복으로 인해 오류가 발생할 가능성이 높아집니다.
2. 핵심 개념 설명
함수(Function): 특정 작업을 수행하는 코드 블록입니다. 함수를 사용하면 코드의 재사용이 가능해집니다.
함수 정의: 함수를 만드는 과정입니다. 함수의 이름, 매개변수, 반환형을 정의합니다.
함수 호출: 정의된 함수를 실제로 사용하는 것입니다. 호출 시 필요한 인자를 전달합니다.
용어 정리
| 용어 | 설명 |
|---|---|
| 매개변수 | 함수에 전달되는 입력값 |
| 반환형 | 함수가 수행한 후 반환하는 값의 데이터 타입 |
| 호출 | 정의된 함수를 사용하는 행위 |
함수를 예를 들어 설명하자면, 요리사가 레시피를 작성하는 것과 비슷합니다. 레시피(함수 정의)는 요리의 방법을 설명하며, 요리사가 손님에게 요리를 제공할 때(함수 호출) 레시피를 참조하여 요리를 합니다.
3. 기본 코드 예제
아래는 두 개의 숫자를 더하는 간단한 함수의 예제입니다.
#include <iostream>
using namespace std;
// 두 숫자를 더하는 함수 정의
int add(int a, int b) {
return a + b; // a와 b를 더한 값을 반환
}
int main() {
int result = add(3, 5); // add 함수를 호출하여 3과 5를 더함
cout << "결과: " << result << endl; // 결과를 출력
return 0;
}
실행 결과
결과: 8
코드 동작 설명
#include <iostream>: C++의 입출력 기능을 사용하기 위해 iostream 라이브러리를 포함합니다.using namespace std;: std 네임스페이스를 사용하여 코드에서 std::를 생략할 수 있게 합니다.int add(int a, int b): 두 정수 a, b를 매개변수로 받아 더한 값을 반환하는 add 함수를 정의합니다.return a + b;: 매개변수 a와 b를 더한 값을 반환합니다.int main(): 프로그램의 시작 지점인 main 함수를 정의합니다.int result = add(3, 5);: add 함수를 호출하여 3과 5를 더해 result에 저장합니다.cout << "결과: " << result << endl;: 콘솔에 결과를 출력합니다.return 0;: 프로그램이 정상적으로 종료됨을 나타냅니다.- 문제점: 매개변수의 타입이 맞지 않아 컴파일 오류 발생.
- 올바른 코드: 매개변수 타입을 float로 변경하거나 정수로 변환.
- 문제점: 수행 결과가 의미가 없음.
- 올바른 코드: 반환값을 변수에 저장하거나 출력해야 함.
- 함수는 코드의 재사용성과 가독성을 높이는 중요한 요소입니다.
- 함수를 정의할 때 매개변수와 반환형을 명확히 해야 합니다.
- 실무에서 자주 사용되는 패턴을 이해하고 활용하는 것이 중요합니다.
- 다음 학습 주제로는 함수 오버로딩이나 람다 함수를 추천합니다.
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니에 상품 추가
쇼핑몰 애플리케이션에서 장바구니에 상품을 추가할 때, 여러 상품의 가격을 더하는 함수를 사용할 수 있습니다.
#include <iostream>
using namespace std;
float calculateTotal(float price[], int count) {
float total = 0;
for (int i = 0; i < count; i++) {
total += price[i]; // 각 상품의 가격을 더함
}
return total; // 총합을 반환
}
int main() {
float prices[] = {99.99, 49.99, 15.00}; // 상품 가격 배열
int itemCount = sizeof(prices) / sizeof(prices[0]); // 상품 개수
float totalPrice = calculateTotal(prices, itemCount); // 총 가격 계산
cout << "장바구니 총 가격: $" << totalPrice << endl; // 출력
return 0;
}
예제 2: 학생 점수 평균 계산
학생의 점수를 입력 받아 평균을 계산하는 함수입니다.
#include <iostream>
using namespace std;
float calculateAverage(int scores[], int count) {
int sum = 0;
for (int i = 0; i < count; i++) {
sum += scores[i]; // 점수를 모두 더함
}
return static_cast<float>(sum) / count; // 평균을 반환
}
int main() {
int studentScores[] = {88, 76, 90, 85, 95}; // 학생 점수 배열
int numScores = sizeof(studentScores) / sizeof(studentScores[0]); // 점수 개수
float averageScore = calculateAverage(studentScores, numScores); // 평균 계산
cout << "학생 평균 점수: " << averageScore << endl; // 출력
return 0;
}
5. 흔한 실수와 주의사항
실수 1: 매개변수의 데이터 타입 불일치
int add(int a, int b) {
return a + b;
}
int main() {
float result = add(3.5, 2.5); // float를 int로 전달
}
실수 2: 반환값을 무시하기
int add(int a, int b) {
return a + b;
}
int main() {
add(3, 5); // 반환값을 사용하지 않음
}