| wolverine |
return 0 와 return은 전혀 다른 의미 입니다.
만약 int func1(void) 라는 prototype을 가지는 함수라면,
return 0와 같이 정수 값만 반환이 가능합니다.
이 함수 내에서 return; 을 쓰게 되면, compile error가 발생합니다.
경우에 따라서 compile error가 아닌 warning으로만 끝나는 경우도 있는데,
이런 경우 program이 돌아가더라도 run-time error가 발생할 수 있습니다.
반대로, void func2(void) prototype을 가지는 함수에서
return 0;을 쓰게되면, compile error가 발생합니다.
함수의 목적에 따라서 return 값이 필요하지 않을 경우는 void 반환형을 쓰고,
return 값이 필요할 때에는 정확한 반환형을 써주면 됩니다.
만약 a,b를 더하라는 함수를 만든다면, 가장 쉽게는
int add(int a, int b)
{
return (a+b);
}
라고 만들고,
int sum;
sum = add(10,20);
이라고 사용할 수 있을 겁니다.
이 함수를 void로 만들면,
void add(int a, int b, int *c)
{
*c = a+b;
return;
}
라고 만들고,
add(10,20,&sum);
이라고 사용할 수 있습니다.
두가지 경우 모두 sum에 30이라는 결과값이 저장이 됩니다. |
2012/07/05 |
|