관리 메뉴

IT창고

C Function (함수) 본문

프로그래밍/C

C Function (함수)

방구석여포 2018. 5. 24. 14:06

함수는 특정행위를 하기 위해 만들어 놓은 기능입니다. 함수는 호출하지 않으면 프로그램 수행에 영향이 없으며 호출하는 순간 코드가 함수의 수행문으로 'jump' 한 뒤에 수행문이 끝나면 호출했던 위치로 돌아옵니다.


함수를 사용하는 이유는 높은 재사용성과 중복된 코드를 없앨수있습니다. 


함수의 기본 구조에 대해 알아보겠습니다.

반환타입 함수이름(매개변수)  

{

   수행문

}


- 매개변수 : 함수의 기능을 수행하기 위하여 함수가 호출될때 받는 값을 담는 변수, 매개변수는 지역변수입니다.

- 함수이름 : 변수의 이름을 정하듯 의미를 부여

- 반환타입(return type) : 함수의 기능을 수행하고 끝나면 호출했던 위치로 돌려줄 값의 타입, 만약 반환값이 없다면 void를 명시합니다 반환되는 값은 2개 이상은 안됩니다.



C언어는 절차지향언어이기 때문에 위에서 아래로 코드를 읽으며 main()함수에서 사용할 함수가 더 밑에 정의 되어 있으면 main은 그 함수의 형태를 모릅니다. 그엏기에 main()함수 위에 선언 코드를 따로 작성해야합니다.



#include로 사용할 헤더를 정하고 함수를 선언합니다 함수의 정의는 선언후 main()함수 아래에서 해도 되지만 바로 정의해도 됩니다.


main()함수 안에서는 다른 함수에서 사용했던 변수를 사용해도 문제없습니다. 만약 위에서 함수를 선언하지않고 main()함수 아래에 함수를 선언하고 정의를 하면 제대로 작동하지않습니다.


이번에는 함수안에서 함수를 호출해보도록 하겠습니다.

함수안에서 함수가 호출이 됩니다. 중요한건 호출하고 수행이 끝나면 호출했던 위치로 돌아가는 순서입니다. 


마지막으로 재귀함수에 대해 알아보겠습니다.

재귀함수란 함수의 수행문 안에서 '자기 자신' 함수를 다시 호출하는 것으로 재귀호출을 하는 함수라는 뜻으로 재귀함수라며 반복문과 비슷합니다.


함수는 호출되면 스택(stack)메모리를 사용하는데 너무 많은 반복 호출은 오류가 발생은 (Stack Overflow 스택메모리 초과)

메모리공간을 반복 사용 반복문보다 속도가 느립니다. 함수 호출시 스택을 사용하는 이유는 수행이 끝나고 돌아와야할 위치를 기억해줘야하기 때문입니다. 

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

C 배열(Array)  (0) 2018.05.29
C 함수 연습문제  (0) 2018.05.24
C 반복문 연습문제  (0) 2018.05.23
C 조건문 연습문제  (0) 2018.05.20
C 반복문 for, while, do~while  (0) 2018.05.18
Comments