B2024001225 윤지선
11주차 예습과제 본문
함수 개요와 표준라이브러리 함수
C 프로그램의 기본 틀
- 콘솔 기반 C프로그램은 main() 함수로 시작
- main() 함수는 콘솔 기반 C프로그램의 시작점
- 하나의 프로그램에 반드시 하나 존재
- 리턴값이 없는 함수나 매개변수가 없는 함수는 그 위치에 비어있다는 뜻의 void를 씀
- 매개변수 리스트에 쓰는 void는 생략할 수 있지만 리턴형에 쓰는 void는 생략 불가능
함수의 입력과 출력
입력: 매개변수(parameter), argument
출력: 반환값(return ), 리턴값 -> 함수가 돌려주는 결과 값
void: 리턴값이 없으면 리턴형 쓰는 자리에 void, 매개변수가 없으면 매개변수 쓰는 자리에 void
매개변수가 없는 경우에는 생략 가능하지만 C언어에서는 생략하지 않는 것이 좋음

함수명
- 동사, 모두 소문자와 단어 사이 언더스코어(_)
- 동사, 의미가 바뀌는 부분은 대문자
함수 선언 정의 호출
함수 정의: 함수 만들기 -> 이름, 매개변수, 리턴형, 기능
함수 호출: 함수 사용하기 -> 이름, 매개변수
함수 선언: 함수의 사용법 -> 이름, 매개변수, 리턴형
-> 컴파일러에게 함수에 대한 정보를 미리 줌
-> 함수 정의의 첫번째 줄을 세미콜론으로 끝나는 문장으로 만듦
함수 만들기 (1)
전광판 함수
- 전광판은 전원이 들어와 있으면 입력이 필요 없고 화면에 출력만 하므로 리턴값이 없다고 봄
- C언어에선 리턴값은 재가공할 수 있게 되돌려지는 값을 말함
- 함수가 계산만 하거나 출력만 하고 끝난다면 리턴값이 없다고 생각하면 됨
- 리턴값이 없으면 리턴형을 쓰는 자리에 void를 스고 입력인 매개변수가 없다면 매개변수 리스트 자리에 void를 사용

함수 만들기 (2) : 두 배 해서 출력하는 함수

함수 선언(원형, prototype)과 반환값
함수의 정의와 선언(원형, prototype)
- 덧셈기 함수의 정의(구현)
int add(int x, int y) // 함수의 머리(header)
{ // 함수 본체의 시작
return (x+y); // 함수의 본체(body)
} // 함수 본체의 끝
- add() 함수의 정의에서 첫번째 줄인 "int add(int x, int y)"를 함수의 머리(header)라고 하고 아래 부분은 함수의 본체(body)라고 함
- 함수의 머리 부분을 다음과 같이 하나의 문장으로 만드는 것을 함수 선언 또는 함수 원형(prototype)이라 함
-> 여기서 하나의 문장은 세미콜론으로 끝남
함수 선언이 귀찮다면?
- 사용자가 만든 함수의 정의가 main() 함수 뒤에 있으면 main() 함수 전에 해당 함수의 선언문을 추가해야 함
- 컴파일러는 함수 호출 시 함수 선언과 일치하는지를 체크하여 오류를 수정할 수 있으므로 함수 선언이 되어 있지 않으면 오류를 발생시킴
- 함수 선언문을 한 줄 작성하는 것이 귀찮으면 view() 함수의 정의를 main()함수 전에 하면 됨.
- 함수 정의는 선언을 겸하고 있으므로 따로 선언할 필요가 없음
- 이 방법은 함수들끼리 호출하는 상황에서는 오류를 발생시킬 수 있으므로 권장하지 않음

main() 함수의 리턴 값
- return문을 만나면 함수의 나머지 부분에 상관없이 함수의 실행을 종료하고 호출한 함수로 넘어감
- main() 함수의 경우 return문을 만나면 프로그램이 끝남
- return문은 하나의 값만 되돌려줌 -> 포인터를 사용해야 둘 이상의 값을 return할 수 있음
- main() 함수의 리턴값은 프로그램이 끝나면서 OS에 전달되는 값
- 프로그램이 정상적으로 종료되면 보통 0을 리턴
- 비정상적으로 종료할 때는 1을 리턴하는 것이 관례