[혼공C] 4주차 Ch.07

Junsu Park ㅣ 2024. 7. 30. 22:35

[혼공C] 4주차

주간 진도 기본 숙제(필수) 추가 숙제(선택)
4주차
(7/22~7/28)
Ch.07 함수의 유형 정리하기. p.226 7-5번 풀어보기.

 

유튜브 강의: 혼자 공부하는 C언어

 

혼자 공부하는 C 언어

[혼자 공부하는 C 언어]는 [이것이 C언어다]의 전면 개정판으로, 두 책의 독자 모두 이 강의를 참고하여 학습하실 수 있습니다. [혼자 공부하는 C 언어]는 [이것이 C언어다] 콘텐츠를 기반으로 기획

www.youtube.com

Ch.07-1 함수의 작성과 사용

 

1.함수 정의: 함수를 정의하기 위해서는 함수의 이름, 매개변수, 반환형을 필요로 함.

  • 함수명: 함수의 이름으로, 함수가 호출될 때 사용됨.
  • 매개변수: 함수가 입력받는 값들로, 여러개의 매개변수를 사용할 수 있으며, 매개변수는 타입과 이름을 가짐.
  • 반환형: 함수가 결과값으로 반환하는 값의 타입.(반환할 값이 없다면 'void'를 사용.)
int add(int a, int b) {
    return a + b;
}

#이 함수에서 'add'는 함수명, 'int a,b'는 매개변수, 'int'는 반환형이다.

 

2. 함수 호출과 반환: 함수를 실행하기 위해서는 만든 함수를 호출하고 반환해야 함.

  • 함수 호출: 함수가 실행되도록 하는 동작. 함수명과 필요한 인자들을 괄호 안에 넣어 호출함.
resualt = add(a, b);
# add 함수 호출
  • 함수 반환: 함수가 실행을 마치고 결과값을 반환하는 것. 반환값이 있을 경우 'return'문을 사용함.
  • 수 선언: 컴파일러가 새로 만든 함수를 인식할 수 있도록 알리는 것. 주로 함수 정의 전 또는 헤더 파일에서 선언함.
#include <stdio.h>

int add(int x, int y) {
    int temp;
    temp = x + y;
    return temp;  # temp의 값을 반환하여 add 함수 호출 위치로 돌려줌
}

int main() {
    int a = 5, b = 3;
    int result;
    result = add(a, b);  # add 함수 호출, a와 b를 매개변수로 전달하고 결과를 result에 저장
    printf("Result: %d\n", result);  # 결과 출력
    return 0;
}

 

Ch.07-2 여러가지 함수 유형

  • 매개변수가 없는 함수: 괄호 안에 void를 넣어 매개변수가 없음을 표시함.
    (괄호만 써도 되지만 void를 넣어 매개변수가 없음을 표시) 하지만 반환형은 존재해야 함.
int getNumber(void) {
    return 42;  # 임의의 값을 반환함.
}
  • 반환값이 없는 함수: 반환값이 없고, 함수의 실행 결과를 반환하지 않는 함수. 반환형이 'void'임.
void printSum(int a, int b) {
    printf("Sum: %d\n", a + b);  #결과를 출력하지만 반환하지 않음(return 값이 없음.)
}
  • 매개변수와 반환값이 모두 없는 함수: 매개변수도 없고, 반환값도 없는 함수로, 반환형과 괄호 안에 'void' 사용함.
void sayHello(void) {
    printf("Hello!\n");
}
  • 재귀호출 함수: 자기 자신을 호출하는 함수로, 재귀호출을 통해 문제를 반복적으로 해결 가능.
    (종료 조건을 반드시 명시 해야함)
int factorial(int n) {
    if (n <= 1) { # 종료 조건: n이 1 이하일 때
        return 1;
    } else {
        return n * factorial(n - 1); # 재귀 호출
    }
}

재귀호출 함수와 반복문의 차이점은?

재귀호출 함수와 반복문은 둘 다 반복적인 일을 수행할 때 사용하는 코드들이지만, 동작 방식등 여러부분에서 차이가 존재.

 

  재귀호출 함수 반복문
정의 함수가 자기 자신을 호출하여 반복 명령을 반복적으로 실행.
메모리 사용 함수를 계속해서 '실행'하기에 반복시 메모리 부족 명령을 '반복'하기에 메모리 상관X
무한 반복 시 무한 재귀는 스택오버플로우(과부화) 발생 무한 루프는 CPU를 반복적으로 사용
속도 느린 실행. 빠른 실행.
가독성 코드 길이와 변수가 적어 가독성 증가 코드 길이가 길어지고 변수가 많아져 가독성 하락

 

정리하자면

 

재귀호출 함수 

  • 장점: 가독성 증가(변수 사용을 줄임.)
  • 단점: 속도 느림, 스택 오버플로우 위험

반복문

  • 장점: 속도 빠름, 메모리 사용량 적음
  • 단점: 가독성 하락(코드가 길어져 함수등이 증가하기에.)

'혼공C' 카테고리의 다른 글

[혼공C] 6주차 Ch.09  (0) 2024.08.19
[혼공C] 5주차 Ch.08  (0) 2024.08.13
[혼공C] 3주차 Ch.05~Ch.06  (4) 2024.07.23
[혼공C] 2주차 Ch.03~Ch.04  (2) 2024.07.15
[혼공C] 1주차 Ch.01~Ch.02  (0) 2024.07.07