브래의 슬기로운 코딩 생활
함수 본문
매개변수, 인자, 리턴값
함수
- C 프로그램은 함수(function)의 집합
- 함수란 특정한 작업을 하도록 만들어진 독립적인 단위 모듈
- 큰 프로그램 하나를 여러 개의 함수로 분할하여 구현하는 구조적 프로그래밍(structured programming) 방식의 기본
- 함수에 입력시키는 것을 매개변수(parameter) 또는 전달인자(인수, argument)라 함
- 함수가 돌려주는 결과 값을 반환값 또는 리턴값(return value)이라 함
C프로그램의 기본 틀
- 콘솔 기반 C 프로그램은 main() 함수로 시작
- main()함수는 콘솔 기반 C 프로그램의 시작점(entry point)
- 하나의 프로그램에 반드시 하나 존재
- 리턴값이 없는 함수나 매개변수가 없는 함수는 그 위치에 비어 있다는 뜻의 "void"를 씀
- 매개변수 리스트에 쓰는 "void"는 생략할 수 있지만 리턴형에 쓰는 "void"는 생략 불가
- C99부터는 main()함수는 예외적으로 return 0;이라는 소스를 생략 가능
- 하지만 대부분 생략하지 않음
함수의 입력과 출력
입력 - 매개변수(parameter), 인자
출력 - 반환값(return value), 리턴값 = 함수가 돌려주는 결과 값
- 리턴값이 없으면 리턴형 쓰는 자리에 void
- 매개변수가 없으면 매개변수 쓰는 자리에 void (이 경우는 생략 가능)
함수 개요
- C 프로그램은 함수의 집합
- 함수란 특정한 작업을 하도록 만들어진 독립적인 단위 모듈
- 함수에 입력되는 것은 인자(argument)
- 받은 인자는 함수 안에서 매개변수, 파라미터 (parameter)
- 함수에서 출력되는 것을 반환값, 리턴값(return value)
C 언어에서 사용하는 함수
- printf() 등의 표준 라이브러리 함수
- 프로그래머가 직접 만든 함수
- main()함수
main()함수
- main()함수는 뜻이 의미하듯이 가장 중요한 함수로 한 프로그램에 반드시 하나 존재해야 하며, 프로그램의 어느 위치에 있든지 상관없이 제일 먼저 실행
- main()함수는 콘솔기반 C 프로그램의 시작점(entry point)
- 함수를 직접 만들기 위해서는 함수의 이름, 리턴값, 매개변수, 실행 코드 등을 작성
함수를 사용할 경우 장점
- 복잡한 문제를 나누어서 해결하는 구조적 프로그래밍 (structured programming)이 가능
- 프로그램의 각 부분을 독립적인 모듈로 나누어 작성하므로 작성, 수정, 유지 보수, 확장이 용이
- 반복되는 작업을 하나의 루틴으로 만들어 재사용하므로 코딩 양이 감소
- 일반 사용자가 알 필요가 없는 특정한 부분을 숨길 수 있는 정보 은폐 가능
표준 라이브러리(standard library) 함수
- C 언어는 기본 문법과 함께 상당히 많은 함수들을 컴파일러에서 지원하는데 이러한 함수들의 집합을 표준 라이브러리 함수라 함
- 마이크로소프트(Microsoft)같은 컴파일러 제작사는 자주 사용되는 공통적인 함수들을 미리 만들어서 컴파일러와 함께 배포
- 런타임 라이브러리(C RunTime : CRT)라고 부름
- 이러한 함수를 표준 라이브러리(standard library) 함수라 하며 printf(), scanf() 등이 대표적
ANSI C와 표준 라이브러리 함수
C 컴파일러를 만드는 회사들이 제각각 사용자가 필요로 하는 함수들을 제공했었는데 1989년에 제정된 ANSI C 표준에서 통일
C 표준은 C 컴파일러가 제공해야 하는 함수의 목록과 원형, 기능을 규정하고 있으므로 모든 C 컴파일러는 표준대로 라이브러리를 제공해야 함
C 표준은 필요한 최소한의 함수 목록만을 규정하며 컴파일러 제작사는 필요에 따라 함수를 더 추가로 정의하고 있으므로 컴파일러 제작사에 따라 런타임 라이브러리의 구성이 조금씩 다름
표준 라이브러리 함수와 표준 헤더 파일
- printf(), scanf() 같은 기본적인 표준 함수들은 모든 컴파일러에서 제공
- 볼랜드사의 Turbo C 컴파일러에는 gotoxy(), clrscr() 등의 함수들이 있지만 Visual C++에는 없으며 같은 함수라도 컴파일러에 따라 이름이 다른 경우도 있음
- 표준 라이브러리 함수는 이미 만들어져 있으므로 바로 사용하면 되지만 사용하기 전에 반드시 선언을 해야 함
- 함수 선언이란 리턴형, 함수 이름, 매개변수 리스트 정보를 갖는 함수의 사용법
- 표준 라이브러리 함수는 직접 선언할 수도 있지만 이 함수가 이미 선언되어 있는 표준 헤더 파일을 #include 전처리기를 이용하여 프로그램에 포함시키는 방법을 더 많이 사용
- 표준 헤더 파일(standard header file)은 표준 라이브러리 함수들을 미리 선언해 놓은 파일
- printf(), scanf()등 표준 입출력 함수들은 stdio.h파일에 선언(원형, prototype)이 들어 있음
C 표준 라이브러리 함수
math.h와 string.h
stdlib.h와 time.h
입출력 함수
문자열 함수
문자 함수
수학 함수
날짜, 시간 함수
메모리 관련 함수
유틸리티 함수
사용자 정의 함수
함수 정의
- 이름, 매개변수, 리턴형, 기능
함수 호출
- 함수 사용하기
- 이름, 매개변수
함수 선언
- 함수의 사용법
- 컴파일러에게 함수에 대한 정보를 미리 줌
void display(void)
{
printf("안녕");
} // 함수 정의
display(); // 함수 호출
void display(void); // 함수 선언
return문
- 결과 값을 호출한 함수로 반환
- return문을 만나면 함수의 나머지 부분에 상관없이 함수의 실행을 종료하고 호출한 함수로 넘어감
함수 호출(call)
- 함수를 만드는 것을 함수를 정의(definition) 한다고 함
- 함수를 만든(정의) 후 함수를 사용(호출)
- 함수를 호출할 때는 함수 이름과 괄호 안에 argument를 개수만큼 써야 함
- argument가 없을 때는 빈 괄호만 쓰면 됨
'Class > C, C++' 카테고리의 다른 글
제어문 (0) | 2022.12.29 |
---|---|
C 언어 문법 정리 - 식별자, 리터럴(상수), 자료형, 변수, 전처리기, 연산자 (2) | 2022.12.26 |
C++ 언어 소개 (2) | 2022.12.25 |
C / C++ 자료 출처 (0) | 2022.12.25 |