프로그래밍

 3198, 1/160 회원가입  로그인  
   곧미남
   c언어 함수..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3505 [복사]


#include <stdio.h>

int yy ( int uu );

void main ( void )
{
     printf ("1~100까지의 합은 %d \n", uu(100) );
     }
    
     int yy ( int uu )
     {
         int i, yy=0;
        
         for ( i=1; i<=uu; i++ )
         {
             yy+=i;
             }
            
             return yy;
             }

1부터 100까지 합을구하려는데요 책에서 대충이런식으로 함수를 선언하고 사용하던데 오류가뜨네요;;
뭐가잘못됏는지 알려주세요 그리고 매개변수,인수,반환값이 뭔가요?? 책에나오긴하나 사전마냥 딱딱하게 설명이돼잇어서 이해가잘안가네요ㅠ

  Hit : 4901     Date : 2012/10/07 09:16



    
T3ddyB34r uu(100)을 yy(100)으로 고쳐야할 것 같아요 2012/10/07  
T3ddyB34r #include <stdio.h>

int yy ( int uu );

void main ( void )
{
printf ("1~100까지의 합은 %d \n", yy(100) );
}

int yy ( int uu )
{
int i, yy=0;

for ( i=1; i<=uu; i++ )
{
yy+=i;
}

return yy;
}


나이가 어떻게 되시는 지는 잘모르겠지만 수학에서의 함수를 배우셨다면
이해하기 쉬우실 것 같아요

f(x) = 2x+1
을 예로 들어보죠

f(x)라는 함수는 x에 두배한것에 1을 더한 값을 반환(return)하는 함수에요.
여기서 x라는 변수는 매개변수라고 불러요.
f(x)의 내용을 표시할 때 2x+1 이렇게 쓸 수 있도록 해주는 것이 x, 즉 매개변수가되는거에요.

사실 인수도 같은개념인데 미묘하게 차이점이 있습니다. 인수와 매개변수를 구분하는 사람이있고 아닌사람이있는데 수학에서는 구분하지만 저는 프로그래밍에서는 굳이구분할 필요는 없다고 봐요

인수는 x에다가 3의 값을 넣는다고 할까요.
그럼 f(3) = 2*3+1 = 7 이겠죠
여기서 3이 인수가 되는 거고 7값이 반환값(위에서 f(x)라는 함수는 이런것이다 할 때 반환하는 결과값을 반환값이라고 부르는 거에요)

프로그래밍에 적용시켜보자면

위 함수는 yy(int uu) 라는 함수에요.
uu라는 매개변수를 사용해서 어떤 과정을 처리하여서 값을 반환해주는 것이에요.
이 yy(int uu)는 코드에서 해석해보면 1부터 uu까지의 합을 반환해주는군요.
그럼 100을 대입해 볼까요

여기서 100이란 인수를 대입할게요
yy(100)값은 1부터 100까지 더한값이 나오겠군요 여기서 return yy는 yy(100)에서 1부터 100까지더한값을 yy에 가지고있고 그러므로 마지막에 yy를 반환값으로 준다는 의미에요.

int yy(int uu) 처럼 return을 해주는 함수도 있지만 void main() 처럼
return을 안해주는 함수도 있습니다.
이런 함수는 구분해서 프로시저(procedure)라고 따로 구분해서 부르기도 하는데 매개변수와 인수(인자)처럼 잘 구분해서 쓰지는 않고 대게 뭉뚱그려 함수라 부릅니다.


질문에 맞는 답변이었으면 좋겠네요.
2012/10/07  
T3ddyB34r 아 그리고 특별한 경우를 제외하면 함수랑 변수의 이름을 같게 정하는 것은 좋지않은 것 같아요
그러니까 yy함수내에서 yy라는 변수를 정하는 것보다 변수이름을 다른걸로 정해야 어떤게 함수고 어떤게 변수인지 구분하고 용도를 다르게 쓰고 코드에대한 이해도도 높여주니까요
2012/10/07  
곧미남 자세한답변 감사합니다 ㅎㅎ^^ 열심히공부해야겟네요.. 2012/10/08