신헌주 학생, 반갑습니다.
잘 지적해 주셨습니ㅣ다.
C언어에서 함수의 반환형이 void가 아닌 경우 해당 자료형의 값을 반환하는 것이 원칙입니다.
만일 반환형이 void가 아닌데 return 명령으로 값을 반환하는 문장 없이 함수의 끝에 도달하면
문법적으로 에러로 처리하지는 않지만, 그 함수를 호출한 문장에서 함수의 결괏값으로
사용하게 될 값을 예측할 수 없어 쓰레기값이 사용됩니다.
컴파일러는 이러한 함수 정의 문장에 경고문을 낼 수 있습니다.
(자료형에 더 엄격한 C++ 언어에서는 에러로 처리합니다.)
비록 에러로 처리되지 않는다 하더라도, 이렇게 작성하는 것은 예측할 수 없는 동작을 하는 프로그램을 작성하는 것이므로
지양해야 할 사용 예입니다.
강의에서는 이 함수를 다음과 같이 정의하였습니다.
교재의 정오표도 이렇게 반영하여 두겠습니다.
#include <stdio.h>
struct num *calc(struct num *);
……
struct num *calc(struct num *number2) {
number2->sum = number2->x + number2->y;
number2->mul = number2->x * number2->y;
return(number2);
}
참고하시기 바랍니다.
이병래 교수