프로그래밍

 3198, 1/160 회원가입  로그인  
   twt525
   C언어 프로토타입선언

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


안녕하세요 C언어열공중인 중3학생입니다
함수공부를하는데 프로토타입선언이  이해가 아예안되서...
프로토타입선언에대해 쉽게설명해주셧으면좋겠습니다!!!

  Hit : 6170     Date : 2011/12/24 09:12



    
BrokenPipe 프로토타입자체를 이해못하신거같아서 설명드릴게요
수학에 비유하면 프로토타입은
y=x+5
이런 미지수가 포함된 식이라고 보시면됩니다.
이 미지수는 함수에 넘어가는 인자고요.
y=x+5라는 함수가 있다면
x에 3을넣어 y라는 리턴값을 받게 되는것이죠

#include <stdio.h>
int addfive(int x){
return x+5;
}
int main(){
printf(addfive(3)); // 8
return 0;
}
2011/12/24  
BrokenPipe 띄어쓰기가 안되서 보기 불편하시면 메인페이지에 있는 댓글에서 보시면됩니다 2011/12/24  
twt525 잘이해가 안되네요 ㅠㅠ 2011/12/24  
BrokenPipe 중학교 3학년이시라니 다시 설명드리면
f(x) = x + 5
라는 일차방정식이 있을때
f(x)는 함수에서 return 되는 값
x + 5는 함수가 실행하는 연산

int f(x){
return x+5;
}
f(x) 에서 x 에 5를 집어넣게 되면
결과값으로 10 이나오게 되고,
10을 집어넣게 되면 15가 나오게됩니다.

더 나가서 이차방정식으로 설명드리자면

f(x)=x^2+5x+10
이란 이차방정식이 있을때

int f(x){
return x*x+5*x+10;
}
이렇게 하시면 5를 집어넣었을때 f(x)가 가지는 값은 55가 됩니다.
이를 응용해서

#include <stdio.h>
int f(int x){ // 위에선 안썼지만 인자에도 데이터형을 써주셔야합니다.
return x*x+5*x+10; // y=x^2 + 5x + 10
}
int main(){
int y=f(5);
printf("%d", y);
return 0;
}

이 소스 가지고 열심히 연구하시고도 정 안되시면 쪽지 보내주세요
2011/12/25  
BrokenPipe p.s. 위에 리턴되는 값이라고 써놨는데 결과값이랑 같습니다 2011/12/25  
prosthetics 함수는 선언과 정의로 나뉩니다.
C언어에서 함수의 선언은 프로토 타입이라고하며, 정의는 본체라고 합니다.

C언어로 짠 프로그램은 코드 위에서부터 아래로 쭉 실행됩니다.
이것을 절차지향 언어라고 하지요.
절차지향 언어의 경우 위에서 선언하지 않은 변수, 함수는 아래에서 사용될 수 없습니다.

브로큰 파이 님의 코드를 예로 들겠습니다.

<1 : 오류가 있는 코드>
/*
아래와 같이 위에서 선언하지 않은 함수 f()를 사용하게 되면 오류가 발생합니다.
*/
#include <stdio.h>
int main()
{
int y=f(5);
printf("%d", y);
return 0;
}
int f(int x)
{
return x*x+5*x+10; // y=x^2 + 5x + 10
}

<2 : 오류를 수정한 코드>
/*
오류를 수정하기 위해 f()를 위에서 정의해준 코드입니다.
*/
#include <stdio.h>

int f(int x)
{
return x*x+5*x+10; // y=x^2 + 5x + 10
}

int main()
{
int y=f(5);
printf("%d", y);
return 0;
}
<3 : 프로토 타입 사용>
/*
프로토 타입을 위에서 선언해 주었습니다.
이 덕분에 main함수를 가장 위에서 볼 수 있습니다.
여기서는 함수가 한개이지만 함수가 많은 프로그램에서 프로토타입을 사용하여 코딩할 경우
위에서 모든 함수를 찾아볼 수 있어 가독성이 높아집니다.
프로토 타입은 이러한 이유 때문에 사용하는 것입니다.
*/

#include <stdio.h>

int f(int); //프로토 타입

int main()
{
int y=f(5);
printf("%d", y);
return 0;
}

int f(int x)
{
return x*x+5*x+10; // y=x^2 + 5x + 10
}
2011/12/25  
BrokenPipe prosthetics//
아 그러고보니 전 그냥 함수에대해서만 설명드린거군요 ㅋㅋ
부족한점 보충 감사합니다
2011/12/25