포인터 설명 전 두 번째로 함수를 정리하겠다.
● 함수란?
프로그래밍에서 함수의 사전적 의미는 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된
프로그램 코드의 집합이다.
쉽게 일반 수학에서 함수와 비슷하게 생각하면 된다.
수학에서 함수는 어떤 입력값을 가지고 출력 값을 만들어 내는 것을 의미한다.
c언어에서 함수도 출력값과 입력값을 가지고 기능을 수행에 출력 값을 만든다.
더하기 기능을 가진 add 함수가 있다 가정을 해보면
더할 값인 2와 3을 입력값으로 함수에 넣어주고 함수 안에서 더하는 기능을 수행한 후 더해진 값 5를 출력하게 된다.
이를 코드로 나타내면 아래와 같다.

함수를 사용할 때는 크게 3부분으로 나누어 작성한다.
위 코드에서 4행이 함수의 선언, 14행이 함수의 호출, 21~28행이 함수의 정의 부분이다.
● 함수의 선언
함수의 선언은 말 그대로 함수를 선언해 주는 것으로 이 함수를 쓸 것이다라고 main에 미리 알려주는 것이다.
구성은 [출력자료형 함수이름 (매개변수)]이다.

출력 자료형은 함수가 기능을 다 한 후 출력할 값이 가지는 자료형을 의미한다.
매개변수는 함수가 기능을 수행하기 전 함수에 전달해 사용해 줄 입력 값을 말한다.
(선언 부분에선 그 매개변수의 형태를 지정해 준다.)
이러한 입출력 값을 가지고 함수의 타입을 아래처럼 4가지로 나눌 수 있다.

즉 int add(int a); 는 1 1 타입의 함수로 int형의 입력값을 받아 기능을 수행 후 int형으로 출력하는 하는 함수인 것이다.
void print(void); 는 0 0 타입의 함수로 입력도 출력도 없는 함수이다. 이런 함수의 경우 함수의 기능만 수행된다.
● 함수의 정의
함수의 정의는 함수의 기능을 구현해 주는 것으로 main에서 전달받은 매개변수를 이용해 기능을 구현한 다음
return을 통하여 출력 값을 다시 main으로 보내준다.
출력 값이 있는 타입의 함수의 경우 return 문이 꼭 필요하다.
● 함수의 호출
정의된 함수를 main안에서 사용하기 위해선 함수를 호출해 줘야 한다.
함수의 호출은 [함수이름(함수로 보내줄 값)] 로 이루어진다.

이때 매개변수로는 보내 줄 변수의 이름과 선언 시 적어준 매개변수의 이름은 같을 필요는 없고 자료형만 같으면 된다.
출력 값이 있는 함수의 경우 retu rn 값을 함수의 호출 부분으로 보내기 때문에
출력 값을 저장할 변수를 따로 지정해 받아준다.
위 내용들을 그림으로 나타내 보겠다.

그림처럼 함수가 호출되면 메인 밖의 저장소에 add라는 함수가 생성되게 된다.
이 함수는 main으로부터 매개변수를 전달받아 처리를 한 다음 결과를 다시 메인으로 출력해 준다.
리턴을 해줘 기능이 끝난 함수의 자원은 모두 사라진다.
● 함수의 사용 이유
그럼 이 함수를 왜 사용할까? 그냥 main에 다 코드를 넣어도 충분히 구현이 가능한데 말이다.
그 이유는 코드의 가독성을 높이고 수정을 용이하게 위해서 이다.
함수를 사용하게 되면 main은 필요한 기능인 함수 이름들로 구성되고 세부 구현은 따로 있기 때문에
프로그램의 전체적인 흐름을 파악하기 유용하다.
또한 수정을 할 때에도 각 기능별로 함수가 구별되어 있기 때문에 편리해진다.
'c언어' 카테고리의 다른 글
| [C언어 문제] baekjoon문제 풀이 07/13 (0) | 2022.07.13 |
|---|---|
| [C언어 문제] baekjoon문제 풀이 07/06 (0) | 2022.07.07 |
| [C언어 문제] baekjoon문제 풀이 07/05 (0) | 2022.07.06 |
| [c언어 개념] 배열 (0) | 2022.07.05 |
| [C언어 문제] baekjoon문제 풀이 07/04 (0) | 2022.07.04 |