4주차 기본 미션: 함수의 유형을 직접 정리하여 공유
함수: 기능을 수행하는 코드 단위. main, scanf, printf 등 여태 사용해왔던 것들이 모두 함수.
함수를 만들기 위한 세 가지 조건
1. 함수 정의: 실제 코드로 만드는 것, 기능 구현
2. 함수 호출: 함수를 사용하기 위함
3. 함수 선언: 어떤 함수를 사용할 것인지 컴파일러에 정보를 주는 역할
1. 함수 정의
함수명, 매개변수, 반환형 총 3가지로 함수 원형을 이룸.
반환형 함수명(매개변수1, 매개변수2)
{
//함수가 수행하는 명령. 결괏값을 돌려보냄
}
함수가 수행할 내용을 중괄호 안에 넣어주면 함수를 완성, 이를 함수 정의라고 부름.
2. 함수 호출
함수를 사용하려면 호출이 필요함. 이름을 사용하며, 함수에 필요한 데이터를 괄호 안에 넣어줌 (인수)
ex. sum // 함수명 (30,40) // 상수 인수
입력된 인수의 값은 매개변수에 복사되어 함수 내에서 사용함.
2-2. 함수 반환
호출된 함수가 실행을 끝내고 값을 반환할 때 return을 사용, 이때 return 뒤에 있는 값을 호출한 곳으로 반환함. 반환된 값을 변수에 저장하고, 함수의 나머지 부분을 실행
3. 함수 선언
컴파일러가 새로 만든 함수를 인식할 수 있도록 알리는 역할.
int sum (int x, int y); //sum 함수를 선언하는 문장
선언은 main 함수 앞에서 하며, 매개변수 이름은 생략 가능.
함수 선언이 필요한 이유
- 함수 선언에서 반환값의 형태를 확인함. 컴파일러는 함수를 호출한 자리에 반환값과 같은 형태의 저장 공간을 준비하는데, 반환값의 형태를 확인하여 해당하는 공간을 확보함.
- 함수의 호출 형식에 문제가 없는지 검사함. 매개변수의 개수와 형태에 대한 정보가 있으므로, 정확한 값인지 검사하며 문제점을 알려줌.
여러 가지 함수 유형
표준 라이브러리 함수
특징: 특정 기능을 미리 약속하고 프로그램에서 바로 사용할 수 있게 구현되어있음.
매개변수가 없는 함수
선언: int get_num(void); / int get_num();
특징: 호출 시 인수 없이 괄호만 사용
반환형이 없는 경우
선언: void print_char(char ch, int count);
특징: 반환 시 return문을 사용하지 않거나, return;만 단독으로 사용. 호출 문장을 수식의 일부로 쓸 수 없음
반환형과 매개변수와 모두 없는 경우
선언: void print_title(void)
특징: 두 가지 경우의 특징을 모두 포함한다.
재귀호출 함수
선언: void fruit() { ... fruit(); ... }
특징: 함수 안에 재귀호출을 멈추는 조건이 있어야 한다.
4주차 선택 미션: p.198 7-5. 직접해보는 손코딩 예제 테스트 후 apple 출력 후 종료 인증샷, 왜 무한으로 출력되지 않는지 사유 적기
함수는 호출만으로도 일정 크기의 메모리를 사용한다.
함수를 무한 호출하면, 프로그램 하나가 사용할 수 있는 메모리를 모두 사용하며 프로그램이 강제 종료된다.
따라서 무한으로 출력이 불가능하다.
'혼공학습단' 카테고리의 다른 글
[혼공학습단 6기] 6주차 기본 미션, 선택 미션 (0) | 2021.08.16 |
---|---|
[혼공학습단 6기] 5주차 기본 미션, 선택 미션 (0) | 2021.08.10 |
[혼공학습단 6기] 3주차 기본 미션, 선택 미션 (0) | 2021.07.22 |
[혼공학습단 6기] 2주차 기본 미션, 선택 미션 (0) | 2021.07.13 |
[혼공학습단 6기] 1주차 기본 미션, 선택 미션 (0) | 2021.07.05 |
댓글