💡 1. 함수의 개념
함수는 특정 작업을 수행하도록 설계된 독립적인 코드 블록입니다. 재사용성이 높아지고 코드가 깔끔해집니다.
Input
매개변수
➡
➡
Output
반환값
🏗️ 2. 함수의 기본 구조
int add(int a, int b) {
int sum = a + b;
return sum;
}
📜 3. 함수의 선언(Declaration)과 정의(Definition)
컴파일러에게 함수의 존재를 미리 알리는 것을 선언(원형, Prototype)이라고 합니다.
int add(int a, int b);
int main() {
add(3, 5);
}
int add(int a, int b) {
return a + b;
}
🔄 4. 함수 호출과 실행 흐름
함수가 호출되면 현재 위치를 기억하고 함수의 코드로 점프합니다. 스택(Stack) 메모리에 정보가 쌓입니다.
코드 실행 흐름
1: int main() {
2: int x = 10;
3: int result = func(x);
4: printf("%d", result);
5: return 0;
6: }
7: int func(int n) {
8: return n * 2;
9: }
🚚 5. 매개변수 전달 (값에 의한 호출)
C언어에서 함수로 인자를 전달하면 값이 복사되어 전달됩니다. 함수 내부에서 매개변수를 바꿔도 원본은 안전합니다.
💎 6. 반환값 (Return Value)
함수의 실행이 끝나면 `return` 키워드를 통해 결과를 호출자에게 돌려줍니다.
🌐 7. 변수의 범위 (Scope)
변수가 프로그램의 어느 부분에서 접근 가능한지를 범위(Scope)라고 합니다.
int global_var = 100;
void func() {
int local_f = 20;
global_var += 10;
}
int main() {
int local_m = 50;
func();
}
전역 범위 (Global Scope)
global_var:
100
🔄 8. 재귀 함수 (Recursion)
함수가 자기 자신을 다시 호출하는 것을 재귀라고 합니다. 종료 조건이 반드시 필요합니다!
팩토리얼 (Factorial) 코드
int fact(int n) {
if (n <= 1) return 1;
return n * fact(n - 1);
}
상태: 대기 중 (fact(3) 계산 시뮬레이션)
재귀 콜 스택 (Recursive Call Stack)