교재의 함수의 정의에 관한 부분에 대한 질문
#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;
}
<모르겠는점>
**함수를 먼저 정의하고 그 함수를 쓰는게 훨씬 자연스러운 생각인데 왜 이 교재에 나온 코드에서는 함수에 대한 정의가 더 나중에 나오는건가요?
*부분은 왜쓴거죠? 이미 정의부분에서 power가 사용하는 인수의 데이터형식과 power가 반환하는 값의 데이터 형식이 정해 지지 않았나요?
함수에 대한 정의가 나중에 들어가는 이유는 코드의 가독성 때문입니다.
수업에서도 배웠듯이 C언어는 main부터 시작하게 됩니다. 그렇기 때문에 코드가 어떻게 작동하는지를 확인하고 싶으면 main에 들어오는 내용을 읽어야 할 것입니다. 그런데 main이 오기 전부터 앞에서 다른 함수들이 나오게 되면, main을 찾는 것부터가 힘들것입니다. 물론 앞에서 함수를 정의해도 문제는 없지만, 자기 혼자서 볼 코드가 아니면 그 어떤 프로그래머도 이 방식을 용인하지는 않겠지요.
하지만 또 말했듯이 C언어는 위에서부터 아래로 코드가 진행됩니다.
int power(int m, int n);
이런 식으로 함수의 이름과 꼴을 선언하지 않으면, main에서 power라는 함수를 봤을때도 앞에서 나온 적이 없기 때문에 컴퓨터는 도대체 power가 뭐하는 놈인지 알 수 없을 것입니다.
그렇기 떄문에 위에서 어떤 함수가 사용될지 선언을 해주고, 그 함수가 어떤 역할을 하는지 아래에서 정의를 내려주는 것입니다.
답변이 정말 빠르시네요 00
완벽하게 이해됬습니다 감사합니다 ㅠㅠ