본문 바로가기
혼공학습단

[혼공학습단 6기] 4주차 기본 미션, 선택 미션

by Kimpeep 2021. 8. 1.

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 출력 후 종료 인증샷, 왜 무한으로 출력되지 않는지 사유 적기

손코딩 예제
출력, 종료 인증샷

함수는 호출만으로도 일정 크기의 메모리를 사용한다.

함수를 무한 호출하면, 프로그램 하나가 사용할 수 있는 메모리를 모두 사용하며 프로그램이 강제 종료된다.

따라서 무한으로 출력이 불가능하다.

댓글