B2024001225 윤지선

11주차 예습과제 본문

2024년 1학기/C 프로그래밍

11주차 예습과제

윤지선 2024. 5. 14. 02:08

함수 개요와 표준라이브러리 함수

C 프로그램의 기본 틀

- 콘솔 기반 C프로그램은 main() 함수로 시작

- main() 함수는 콘솔 기반 C프로그램의 시작점

- 하나의 프로그램에 반드시 하나 존재

- 리턴값이 없는 함수나 매개변수가 없는 함수는 그 위치에 비어있다는 뜻의 void를 씀

- 매개변수 리스트에 쓰는 void는 생략할 수 있지만 리턴형에 쓰는 void는 생략 불가능

 

함수의 입력과 출력

입력: 매개변수(parameter), argument

출력: 반환값(return ), 리턴값 -> 함수가 돌려주는 결과 값

void: 리턴값이 없으면 리턴형 쓰는 자리에 void, 매개변수가 없으면 매개변수 쓰는 자리에 void

매개변수가 없는 경우에는 생략 가능하지만 C언어에서는 생략하지 않는 것이 좋음

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()함수 전에 하면 됨. 

- 함수 정의는 선언을 겸하고 있으므로 따로 선언할 필요가 없음

- 이 방법은 함수들끼리 호출하는 상황에서는 오류를 발생시킬 수 있으므로 권장하지 않음

view() 함수의 정의를 main() 함수 전에 함

main() 함수의 리턴 값

- return문을 만나면 함수의 나머지 부분에 상관없이 함수의 실행을 종료하고 호출한 함수로 넘어감

- main() 함수의 경우 return문을 만나면 프로그램이 끝남

- return문은 하나의 값만 되돌려줌 -> 포인터를 사용해야 둘 이상의 값을 return할 수 있음

- main() 함수의 리턴값은 프로그램이 끝나면서 OS에 전달되는 값

    - 프로그램이 정상적으로 종료되면 보통 0을 리턴

    - 비정상적으로 종료할 때는 1을 리턴하는 것이 관례

 

'2024년 1학기 > C 프로그래밍' 카테고리의 다른 글

12주차 예습과제  (1) 2024.05.21
11주차 과제  (0) 2024.05.14
10주차 과제  (0) 2024.05.07
10주차 예습과제  (0) 2024.05.07
9주차 수업  (0) 2024.04.30