본문 바로가기

프로그래밍/C언어

[C언어] 함수(1)

안녕하세요 ! 초보개발자 입니다. 

이 블로그는 개인 공부 정리용 블로그 입니다. 

혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.

그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.

그럼 시작하도록 하겠습니다.




함수(FUNCTION)


1. 함수란 ?

함수는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것입니다. 어떤 값을 입력하면 입력된 값을 이용하여 작업을 수행해 결과를 반환하는 것입니다. 예를 들면 이때까지 우리가 사용하였던 printf 함수는 문자열을 입력하면 입력한 문자열을 출력 합니다.



위 그림을 바탕으로 함수는 다음과 같은 기본적인 세가지로 이루어져있는 것을 알 수 있습니다.


- 함수의 이름(sqrt)

- 함수의 입력(4.0)

- 함수의 출력(2.0)


입력 값만 함수에 넣으면 결과를 출력 한다. 함수 내부적으로 어떤 과정을 거쳐 출력값을 만들어 내는지는 몰라도 된다. 이때까지 우리가 써왔던 printf, scanf 함수역시 함수 내용은 몰라도 사용하는데는 어려움이 없었다.



표준라이브러리(standard library) - C언어는 프로그램을 작성할 때 자주 사용되는 기본적인 함수들을 제공하는데 이를 표준라이브러리 라고 한다.


사용자정의함수(user-defined function) - 필요에 따라서 우리가 직접 함수를 정의 하여 사용할 수 있는데 이를 사용자정의함수라고 한다.


2. 함수를 정의하는 방법

 함수는 크게 선언부(반환타입,함수이름,매개변수 선언), 구현부(구현할 문장) 으로 이루어져 있습니다. 예를 들면 아래와 같습니다.


int sum(int x, int y){

int result = x + y;


return result;

}


int를 반환타입이라 하고 sum을 함수이름, 괄호안에 있는 int x, int y를 매개변수라고 합니다. 이를 통틀어 선언부라고 하면 되겠습니다.


그리고 선언부 뒤에 {} 괄호를 구현부라고 합니다.


return문은 함수의 반환 타입이 void 가 아닌 경우에 사용합니다. 위의 코드에서 return result 는 result 에 저장된 값을 반환 합니다. 함수 sum의 반환타입이 int 형이므로 result 값도 int 형이어야 합니다. 


3. 함수의 호출

 함수를 정의 하였어도 정의한 함수를 호출하지 않으면 아무일도 일어나지 않습니다. 함수를 호출하는 방법은 함수이름(값1,값2...); 입니다. 그러면  sum 함수를 정의 한것을 호출해 보겠습니다.


sum(1,2);

함수를 호출할 때 괄호안에 값을 인자라고 합니다. 인자는 함수를 정의 할때 선언한 매개변수와 일치하여야 합니다. 예를 들면 sum 함수는 매개변수가 2개이고 int 형입니다. 그렇다면 sum 함수를 호출할 때 int 형 인자 2개를 넣어주어야 합니다.


함수를 선언하고 호출하는 것을 예제로 한번 알아보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#pragma warning(disable:4996)
int sum(int x, int y) {
    int result = x + y;
    return result;
}
 
int gob(int x, int y) {
    int result = x * y;
    return result;
}
void intro() {
    printf("두개의 숫자를 입력하세요\n");
}
 
int main(void) {
    int x, y;
    intro();
    scanf("%d %d"&x, &y);
 
    int add = sum(x, y);
    int gob1 = gob(x, y);
 
    printf("입력한 숫자의 합은 %d 입니다. \n", add);
    printf("입력한 숫자의 곱은 %d 입니다. \n", gob1);
 
 
    return 0;
}
 
 
cs



sum 함수와 gob 함수 intro 함수를 정의 하였습니다. intro 함수는 반환 타입이 void 이기 때문에 return 값이 없습니다. intro 함수를 호출하게 되면 printf("두개의 숫자를 입력하세요"); 가 실행되어서 출력 될 것입니다. sum,gob 함수는 처음에 배웠던 예제를 그대로 사용하였습니다. return 값이 있기 때문에 main 함수에서 따로 변수에 저장 하였습니다. 위의 예제 소스를 실행 해보시면 어떤 원리로 돌아가는지 알 수 있을 것입니다.


오늘은 여기서 마치도록 하겠습니다. 다음시간에 이어서 함수에 대해서 알아 보도록 하겠습니다. 수고하셨습니다.



'프로그래밍 > C언어' 카테고리의 다른 글

[C언어] 지역변수, 전역변수,정적변수  (1) 2017.04.19
[C언어] 함수(2)  (1) 2017.04.18
[C언어] 연습문제  (0) 2017.04.17
[C언어] 연습문제(2)  (0) 2017.04.17
[C언어] 연습문제(1) 답  (2) 2017.04.14