잘 이해가 안가는데 자세한 해설 부탁드립니다.
안녕하세요 길벗수험서 운영팀입니다.
사용자 정의 함수와, 포인터, 그리고 함수의 합 알고리즘이 함께 응용된 코드입니다.
먼저 사용자정의 함수를 호출함에 있어 포인터를 사용하였으므로, 리턴값이 없어도 같인 포인터 주소를 갖고 있는 포인터 변수로 인해 변수 a의 값이 함께 변화함을 알아두세요.
즉, a = *result = *r은 동일한 값을 가지게 됩니다.
main함수는 단순히 re함수를 호출하고 변수 a를 출력하는 역할을 합니다.
re함수는 i를 2~5까지 회전시키면서 pn함수로 리턴받은 값을 포인터 변수 r이 가리키는 값(*r)에 누적시키죠.
(while 반복문을 보면 1에 진입하여 pn(i)가 수행될 때의 i값은 2~5임을 확인할 수 있습니다.)
pn함수는 교재 1권 188쪽의 알고리즘을 그대로 적용하여 합이 출력되는 부분을 합을 리턴하도록 수정한 것입니다.
즉, pn함수에서
p가 2인 경우 소수 2를 리턴하고,
p가 3인 경우 소수 2, 3의 합을 리턴하고,
p가 4인 경우 소수 2, 3의 합을 리턴하고,
p가 5인 경우 소수 2, 3, 5의 합을 리턴하게 되죠.
다시 re함수에서는 위 결과들의 합을 *r에 저장함에 따라 a의 값이 변화되어 마지막 main()함수에서 a를 출력하게 되면 *r과 동일한 값을 출력하게 되는 것이죠.
행복한 하루되세요 :)
-
관리자2019-04-10 09:50:53
안녕하세요 길벗수험서 운영팀입니다.
사용자 정의 함수와, 포인터, 그리고 함수의 합 알고리즘이 함께 응용된 코드입니다.
먼저 사용자정의 함수를 호출함에 있어 포인터를 사용하였으므로, 리턴값이 없어도 같인 포인터 주소를 갖고 있는 포인터 변수로 인해 변수 a의 값이 함께 변화함을 알아두세요.
즉, a = *result = *r은 동일한 값을 가지게 됩니다.
main함수는 단순히 re함수를 호출하고 변수 a를 출력하는 역할을 합니다.
re함수는 i를 2~5까지 회전시키면서 pn함수로 리턴받은 값을 포인터 변수 r이 가리키는 값(*r)에 누적시키죠.
(while 반복문을 보면 1에 진입하여 pn(i)가 수행될 때의 i값은 2~5임을 확인할 수 있습니다.)
pn함수는 교재 1권 188쪽의 알고리즘을 그대로 적용하여 합이 출력되는 부분을 합을 리턴하도록 수정한 것입니다.
즉, pn함수에서
p가 2인 경우 소수 2를 리턴하고,
p가 3인 경우 소수 2, 3의 합을 리턴하고,
p가 4인 경우 소수 2, 3의 합을 리턴하고,
p가 5인 경우 소수 2, 3, 5의 합을 리턴하게 되죠.
다시 re함수에서는 위 결과들의 합을 *r에 저장함에 따라 a의 값이 변화되어 마지막 main()함수에서 a를 출력하게 되면 *r과 동일한 값을 출력하게 되는 것이죠.
행복한 하루되세요 :)