함수란?
함수(function) 는 자주 쓰는 코드 묶음에 이름을 붙여 재사용하는 단위입니다.
"입력(인자)을 받아 일을 하고, 결과(반환값)를 돌려준다"가 기본 구조입니다.
1. 함수의 모양
int add(int a, int b) { // 반환형 이름(인자) { 본문 }
return a + b; // 결과를 돌려준다
}
int main() {
cout << add(3, 5) << '\n'; // 8
}
def add(a, b):
return a + b
print(add(3, 5)) # 8
- 반환형 (C++): 함수가 돌려주는 값의 자료형. 돌려줄 게 없으면
void. - 인자 : 함수에 건네는 입력값.
- return : 결과를 돌려주고 함수를 끝낸다.
2. 왜 함수를 쓰나
같은 코드를 여러 번 적는 대신 한 번 정의하고 여러 번 호출합니다.
bool isEven(int x) { return x % 2 == 0; }
// 여러 곳에서 재사용
if (isEven(a)) ...
if (isEven(b)) ...
코드가 짧아지고, 고칠 때 한 곳만 고치면 되며, 이름 덕분에 읽기도 쉬워집니다.
3. 반환값이 없는 함수
출력만 하고 돌려줄 값이 없으면 void(C++) / 그냥 return 없음(파이썬).
void greet(string name) {
cout << "안녕, " << name << '\n';
}
def greet(name):
print("안녕,", name)
4. 지역 변수와 범위
함수 안에서 만든 변수는 그 함수 안에서만 살아 있습니다(지역 변수). 함수가 끝나면
사라지므로, 다른 함수와 이름이 겹쳐도 서로 간섭하지 않습니다.
int square(int x) {
int r = x * x; // r은 이 함수 안에서만 존재
return r;
}
복잡도
함수 호출 자체는 거의 비용이 없습니다(\(O(1)\)). 다만 함수 안에서 하는 일의
복잡도가 그대로 함수의 복잡도가 됩니다.
정리
- 함수 = 이름 붙은 재사용 코드 묶음.
- 인자로 입력,
return으로 결과. - 돌려줄 게 없으면
void(C++). - 함수 안 변수는 지역 변수 — 밖에 영향 없음.