교재의 함수의 정의에 관한 부분에 대한 질문

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