본문 바로가기
C

함수

by stdlib.h 2016. 3. 28.

함수는 크게 사용자정의함수와 라이브러리 함수가 있다.


라이브러리함수로는, stdio.h 의 printf 나 scanf 같은, 미리 정의되어 있는 함수들이

있다.


또한, 사용자 정의 함수로는 main 외에 사용자가 새롭게 정할 수 있는 함수가 존재한다.


함수가 필요한 이유는, 우리가 프로그램을 작성할때 main 함수 안에서 모든것을 작성할 수도 있다.

하지만, 프로그램이 돌아가는 구조나, 남들이 볼때 매우 힘들고 비효율적이라고 생각한다.




예를들어 뭔가를 조립한다고 했을때, 각 부품 부품을 만들어 조립하는것이다.


또한, 이렇게 하면 고장난 부분만 교체하여 주면 된다.

이처럼 함수는 각 부분이라고 생각할 수 있다.



함수들을 정의하는방법은 다음과 같다.


반환형 함수명(인자)

{

내용

리턴값

}


ex)


int my_strlen(char a[])

{

int i= -1;

int count=0;

while(a[++i])

count++;

return count;

}

위 코드는 string.h 의 strlen 이라는 함수를 흉내낸것이다.


이처럼 사용자가 새로이 함수를 정의할 수 있다.


함수에는 프로토타입이란것이 존재한다.


그 프로토타입은 main 함수위에 쓰는것인데, 반환형 이름(인자);

만 해주면 된다.

이것을 하는 이유는, 자신이 선언한 함수의 인자가 맞는지, 또는 반환값이 다른지 등을 검사하여 오류를 없애기 위함이다.



함수를 호출하는 방법은 다음과 같다.


(위 예시의 my_strlen 이 선언되어있다고 가정한다.)



#include <stdio.h>


int my_strlen(char a[]);


int main(void)

{

char a[] = "abcde";

int d = my_strlen(a);

printf("%d", d);

}

int d = my_strlen(a); 에서,

my_strlen 이 호출되어 그 내용이 실행되고, 5라는 값을 반환하여 d에 넣고, 

d라는 변수가 가진값인 5를 printf로 출력한다.




함수를 사용하는 이유는 모듈화가 되어 편리하고 다시쓰기 용이하기 때문이다.

'C' 카테고리의 다른 글

다차원배열과제  (0) 2016.03.28
과제  (0) 2016.03.28
2차원배열  (0) 2016.03.28
이진탐색  (0) 2016.03.28
선택정렬 & 버블정렬  (0) 2016.03.28