Let's kick it
[혼공C]4주차_ch.07 본문
- 아티스트
- Hozier
- 앨범
- Unreal Unearth: Unheard
- 발매일
- 2024.03.21
4주차 (2/3 ~ 2/9) |
Chapter 07 | 함수의 유형을 정리하여 공유하기 | p. 226 7-5. 직접 해보는 손코딩 예제 테스트 후 apple 출력하고 종료한 화면 캡처하기 왜 무한대로 출력 되지 않는지 이유에 대해 생각하고 정리해보기 |
- 목차
1. 숙제
2. 이론 + 코드 실행
- 숙제
- 함수 유형
- 매개변수가 없는 함수 : 반환형 함수명(void); 처리할 데이터를 스스로 입력하는 함수.
값을 받을 필요가 없어 매개변수가 필요 없는 경우로 void를 넣어 명시적으로 없음을 표현.
void는 함수 정의나 선언에 사용되며 호출할 때는 쓰지 않음. 그냥 괄호만 쓰면 됨.
ex) 함수명이 sum이면 sum();
괄호조차 없다면 함수를 호출하는 문장이 아닌 그냥 함수의 이름으로 인식하니 주의!
- 반환형이 없는 함수 : void 함수명(매개변수); 전달받은 데이터를 화면에 출력하는 함수.
함수는 기능에 따라 형태가 결정됨. 데이터를 받아 단지 출력하는 함수라면 반환값이 필요 없음. 화면에 출력한 내용이 함수가 수행한 결과이므로 호출한 곳으로 값을 반환할 필요가 없음.
반환값이 없으면 return문은 값 없이 단독 사용 가능.
return의 역할이 이 값을 돌려주는 일인데, 돌려줄 값이 없으니 혼자 쓰임. 생략도 가능함. return문이 없어도 함수의 코드를 모두 수행하면 호출한 곳으로 자동으로 돌아감. 만약 함수 실행 중간에 돌아가야 한다면 return문을 어디서든 사용 가능함.
- 매개변수와 반환형이 없는 함수 : void 함수명(void); 같은 내용을 단지 화면에 출력하는 함수.
함수 정의에 return문이 없으며 호출할 때 값을 주지 않고, 호출은 수식의 일부가 아닌 독립된 문장으로 쓰임.
- 재귀 호출 함수 : 자기 자신을 호출하는 함수.
무한반복은 하지 않음. why? 호출만 해도 메모리 할당이 되는데 할당된 메모리를 다 사용해서 메모리 부족으로 중간에 멈추게 됨(= 강제 종료). 중간에 멈춘다고 좋은 게 아님. 그래서 반드시 반복 고리를 끊어낼 조건식을 포함하도록 해서 종료할 수 있게 만들어야 함.
apple이 미친듯이 우다다 나오다가 결국엔 종료됨.
무한 호출하면 프로그램 하나가 쓸 수 있는 메모리 즉, 할당된 메모리를 모두 사용하게 되어 메모리 부족으로 강제 종료된다. 정상적인 종료 방법이 아니므로 반복 고리를 끊기 위한 조건식을 반드시 포함해야 한다.
7-1. 함수의 작성과 사용
함수를 만들 때 필요한 3가지 : 함수 선언, 함수 정의, 함수 호출
- 함수 선언 : 프로그램 상단에서 어떤 함수를 사용할 거라고 컴파일러에게 정보를 주는 역할.
형태) 반환형 함수명(매개변수1, 매개변수2);
함수원형에 세미콜론을 붙여 선언. main함수 위에 적는 것이 좋음. 컴파일러에게 반환형의 자료형과 같은 형태의 크기만큼 저장공간을 준비할 수 있도록 알리기 위함.
함수 원형 : 반환형 함수명(매개변수1, 매개변수2)
- 함수 정의 : 함수를 실제 코드로 만드는 것으로, 함수의 기능을 구현.
어떤 기능을 하는 함수를 만들건지 알리기 위함. 함수명은 기능을 충분히 예상할 수 있게 명확한 단어를 사용하는 것이 좋음.
반환형 함수명(매개변수1, 매개변수2)
{
실행할 내용; // 함수의 기능을 수행할 내용 작성
}
매개변수는 함수가 처리할 데이터를 저장하는 변수.
return은 함수의 실행결과를 돌려주는 제어문.
- 함수 호출 : 함수를 호출한 괄호의 대상(= 인수)가 함수의 매개변수로 들어가 실행됨.
함수를 호출해야 함수가 사용됨.
그리고 함수 기능이 수행되고 return으로 반환할 값을 정해주면 호출한 곳으로 반환되어 main문이 다시 작동됨.
표준 라이브러리 함수 : 특정 기능을 미리 약속하고 프로그래밍에서 바로 사용할 수 있게 구현되어 있는 함수.
ex) printf함수, scanf함수 등 stdio.h헤더파일에 포함됨.
'c언어' 카테고리의 다른 글
[혼공C]ch.08_도전 실전 예제 문제 (0) | 2025.02.03 |
---|---|
[혼공C]ch.08 (0) | 2025.02.02 |
[혼공C]3주차_ch.05,06 (0) | 2025.01.20 |
[혼공C]ch.04_도전 실전 예제 (0) | 2025.01.18 |
[혼공C]4-2_코드 실행 화면과 확인 문제 (0) | 2025.01.16 |