#include<stdio.h>
int power(int m, int n);
main()
{
int i, j;
int answer;
scanf("%d",&i);
scanf("%d",&j);
answer = power(i,j);
printf("Answer is %d\n",answer);
}
int power(int m, int n)
{
for ( ; n > 0 ; n-- )
{
m *= m;
}
return m;
}
---------------------------------------------------------------------------------
1. 함수의 선언
함수의 선언 형태는 다음의 형식을 따른다.
리턴값의 형식 함수이름(매개변수)
{
선언문
문장들
}
리턴값의 형식은 함수를 끝내고선 메인함수로 남겨주는 값의 형태를 말하는 것이다.
정수라면 int, 실수라면 float(경우에 따라 double),.... 여러가지를 써 줄 수있다.
함수를 선언할때 주의점은 main함수보다 위에서 정의 되어야한다는 것이다.
위의 소스와 같이 메인함수 위에 정의하고 내용을 메인함수 아래에 정의 하는것을
'프로토타입'이라고 한다.
프로토타입이 아닌 기본적인 함수선언의 형태를 따른다면 소스는 다음과 같이 변한다.
#include<stdio.h>
int power(int m, int n)
{
for ( ; n > 0 ; n-- )
{
m *= m;
}
return m;
}
main()
{
int i, j;
int answer;
scanf("%d",&i);
scanf("%d",&j);
answer = power(i,j);
printf("Answer is %d\n",answer);
}
---------------------------------------------------------------------------------
2. 함수의 매개변수(parameter)와
함수호출 매개변수(argument)
결론부터 얘기하자면 함수호출 매개변수는 함수의 매개변수가 변해도 변하지 않는다.
함수호출 매개변수에서 함수의 매개변수로 넘길때는 함수호출 매개변수가 있는 메모리를
직접적으로 넘기는 것이 아니라, 다른 메모리의 그 값을 복사시켜서 넘겨주는 것이다.
따라서, 함수의 매개변수와 함수호출 매개변수는 다르다고 할 수 있다.
또한 함수의 매개변수와 함수호출의 매개변수가 같은 형식을 취하고 있어도, 위에서 설명
한 것과 같이 복사후에 사용하는 것이므로 직접적으로 관련은 없다.
다음에 이에대한 그림을 올리도록 하겠다.