주간 | 진도 | 기본 숙제(필수) | 추가 숙제(선택) |
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 |