1. 함수란?

2. 함수의 기본 구조


리턴타입 함수이름(매개변수들) {
// 함수 내용
    return 반환값;
}

// 예시
int add(int a, int b) {
    int sum = a + b;
    return sum;
}

상세 설명:

3. 함수의 종류와 예제

3.1 입력과 출력이 모두 있는 함수


int calculateSquare(int number) {
    int result = number * number;
    return result;
}

int main() {
    int input = 5;
    int answer = calculateSquare(input);  // answer는 25가 됨
    printf("5의 제곱은 %d입니다.\\n", answer);
    return 0;
}

상세 설명:

  1. 함수 호출 과정:
    • main 함수에서 input 변수에 5를 저장
    • calculateSquare 함수 호출 시 input 값을 매개변수 number로 전달
    • number * number 계산 후 결과를 result에 저장
    • result 값을 return으로 반환
    • 반환된 값이 answer 변수에 저장
  2. 메모리 동작:
    • input은 main 함수의 지역변수
    • number는 calculateSquare 함수의 매개변수
    • result는 calculateSquare 함수의 지역변수

3.2 입력만 있는 함수


void printScore(char* name, int score) {
    if(score >= 90) {
        printf("%s님은 A등급입니다.\\n", name);
    } else if(score >= 80) {
        printf("%s님은 B등급입니다.\\n", name);
    } else {
        printf("%s님은 C등급입니다.\\n", name);
    }
}

int main() {
    printScore("홍길동", 85);  // "홍길동님은 B등급입니다." 출력
    return 0;
}

상세 설명:

  1. void 반환 타입:
    • 함수가 값을 반환하지 않음을 의미
    • printf를 통한 출력만 수행
  2. 매개변수 설명:
    • char* name: 문자열을 받기 위한 포인터 타입 매개변수
    • int score: 점수를 받기 위한 정수형 매개변수
  3. 조건문 처리:
    • if-else if-else 구조로 점수대별 등급 판단
    • printf로 이름과 등급을 함께 출력

3.3 출력만 있는 함수


int getRandomNumber() {
    return 7;  // 간단한 예시를 위해 고정값 반환
}

int getCurrentYear() {
    return 2024;
}

// 실제 활용 예제: 게임의 초기 점수를 반환하는 함수
int getInitialScore() {
    int baseScore = 100;  // 기본 점수
    return baseScore;
}

int main() {
    int score = getInitialScore();  // 100이 반환됨
    printf("시작 점수: %d\\n", score);
    
    int year = getCurrentYear();     // 2024가 반환됨
    printf("현재 연도: %d\\n", year);
    
    return 0;
}

상세 설명:

  1. 함수 특징:
    • 매개변수가 없음 (빈 괄호)
    • 반환 타입과 return문이 있음
    • 함수 내부에서 계산이나 처리 후 결과만 반환

3.4 입력과 출력이 모두 없는 함수


void displayWelcomeMessage() {
    printf("*************************\\n");
    printf("*  게임을 시작합니다!  *\\n");
    printf("*************************\\n");
}

// 메뉴 출력 함수
void showGameMenu() {
    printf("\\n=== 게임 메뉴 ===\\n");
    printf("1. 게임 시작\\n");
    printf("2. 설정\\n");
    printf("3. 종료\\n");
    printf("===============\\n");
}

// 게임 규칙 설명 함수
void explainRules() {
    printf("게임 규칙:\\n");
    printf("1. 캐릭터는 방향키로 조작합니다.\\n");
    printf("2. 아이템을 모으면 점수가 올라갑니다.\\n");
    printf("3. 장애물을 피해야 합니다.\\n");
}

int main() {
    int choice;
    
    displayWelcomeMessage();  // 환영 메시지
    
    showGameMenu();          // 메뉴 표시
    
    printf("메뉴를 선택하세요: ");
    scanf("%d", &choice);
    
    if(choice == 1) {
        explainRules();      // 게임 규칙 설명
    }
    
    return 0;
}