맨위로

C PROGRAMMING - 기초2012. 4. 21. 10:56

안녕하세요 ? 이번 강의에서는 C언어의 함수에 대해서 알아보도록 하겠습니다. 이 글에서는 간단한 함수를 이용한 프로그램을 분석함으로써 프로그래밍에서 중요한 부분을 차지하는 함수에 대해서 알아보도록 하겠습니다. 참고로 이글에서 다루는 함수는 가장 기본적인 것으로 함수가 어떻게 쓰이는지 같은 기본 개념을 알기위한 것입니다. 함수에 대한 자세한것은 글이 진행되면서 다루게 됩니다. 먼저 강의를 시작하기 전에 이블로그에 와주신 모든 분들께 감사의 말씀드립니다. 이제 본격적으로 C언어 함수에 대해서 알아보도록 하겠습니다.


함수(Function)


C언어에서는 함수를 쉽게 사용할수 있도록 되어있습니다. 함수의 내부가 어떻게 되어있는지 모르더라도 여러번 해야할 동작을 함수로 만들어 놓으면 쉽게 동작 시킬수 있습니다. 우리가 지금까지 보아왔던 printf,getchar,putchar 들도 모두 함수인데 우리는 이 함수들의 내부구조를 몰랐지만 사용하는데는 아무런 지장이 없었습니다. 이처럼 함수는   프로그래밍시 쉽게 이용할수 있습니다. 그러면 이제 함수에 대해서 알아보기위해 살펴볼 소스코드를 보겠습니다. 소스코드는 다음과 같습니다. 

#include <stdio.h>


int power(int m,int n);

main()

{

int i;

for (i= 0; i < 10; ++i)

printf("%d %d %d\n", i,power(2,i), power(-3,i));

return 0;

}


int power(int base, int n)

{

int i,p;

p = 1;

for (i = 1; i <=n; ++i)

p = p * base;

return p;

}


위의코드는 x의 y제곱을 계산하는 함수를 이용한것입니다. 이프로그램에서 x의 y제곱을 계산하는 것은 Power 함수가 수행하면 main 함수는 Power 함수를 사용해서 화면에 출력하게됩니다. 프로그램 출력결과는 다음과같습니다.


그럼이제 함수에 형태에 대해서 알아보도록 하겠습니다. 함수는 다음과 같은 형태로 정의되어야합니다.

리턴값int의 형 함수이름power(매개 변수)(int base, int n)

{

선언문

문장

}


int power(int base, int n)

{

int i,p; 

p = 1;

for (i = 1; i <=n; ++i)

p = p * base;

return p;

}

함수는 기록되는 순서에 상관없고 다른 파일내에 있어도된다(연결만시켜준다면) .

함수의 형태를 간단하게 알아보았으니 위의 프로그램코드를 살펴보면서 함수에 대해서 더 자세히 알아보겠습니다.

일단위의 프로그램에서 다음 코드가 사용되었다.

printf("%d %d %d\n", i,power(2,i), power(-3,i));

위의 코드에서는 power 함수가 사용되고있다. power 함수는 2와i를 정수형으로 쓰고있고 -3과i도 사용하고있다.

하지만 프로그램을 보면 이상한점이있다. main 함수에서 반복수행을 위해사용되고있는 정수형 i를  power 함수에서도 i를 사용하고 있다. 이렇게되면 프로그램의 흐름이 망가질수있을거라고 생각할수있지만 프로그램은 정상작동을 한다. 그이유는 다음과 같다.

  • C언어 함수에서의 변수는 함수에서만 그의미를 같게된다. 
이말의 의미는 함수에 변수를 바꾸어도 main 함수의 i변수에는 영향을 미치지 않는다는것이다. 


그래서 함수 첫부분에서는 다음과 같이 매개변수와 결과값에 대해 선언을 해주고 있다.

int power(int base, int n) 


그럼이제 다음문장을 알아보겠다. 

{

int i,p; 

p = 1;

for (i = 1; i <=n; ++i)

p = p * base;

return p;

}

위의 코드에서는 보통문법과 다른것이 없지만 눈여겨 볼부분이있다. 바로 함수의 결과값을 나타내는 return p; 문장이다. 위 프로그램의 p 값은 Power(x,y)가 된다. return 뒤에는 변수나 수식이올수있고 아무런 값도 출력하지 않는 함수가 될수도 있다. 

이제 다시위로 올라가서 다음코드를 살펴보겠다. 여기서 볼부분은 보라색부분이다.

#include <stdio.h>


int power(int m,int n);                

main()

{

int i;

for (i= 0; i < 10; ++i)

printf("%d %d %d\n", i,power(2,i), power(-3,i));

return 0;

}

보라색 부분이 의미하는것은 power 함수에 (int m, int n) 정수를 두개 받아들여서 결과를 정수값으로 내주는것이다. 이런것을 함수선언이라고 한다. 함수선언과 실제 함수와 맞지 않을 경우 오류가 발생한다. 여기서 m,n변수는 함수 power에서만 사용되는 것이므로 다른 변수이름으로 바꾸어도 상관은 없다. 예를 들면 다음과 같이 변경할수 있다.

int power(int, int);


마치며

지금까지 위의코드를 살펴보면서 함수에 대해서 알아보았습니다. 글의 흐름이 뒤엉켜있어서 이해하시는데 어려울수 있습니다. 여기서는 프로그램에 흐름,함수 선언,함수의 특징(변수,반환 등) 을 보면 되겠습니다.



'C PROGRAMMING - 기초' 카테고리의 다른 글

C언어 - 문자 배열  (0) 2012.05.26
C언어 - 매개변수값 전달  (0) 2012.04.22
C언어 - 함수  (0) 2012.04.21
C언어 - 배열  (6) 2012.03.01
C언어 - 문자 입출력  (2) 2012.02.21
C언어 - 상수정의  (0) 2012.02.18

Posted by STIH

댓글을 달아 주세요