void prnt(int *x, int *y, int*z)로 void가 선언되었으므로 *x값 10과 *z값 55가 리턴이 안되는데 왜 a와 c가 10과 55로 프린트가 되는지요? 출력이 그냥 0, 10, 0이어야 하는 거 아닌가요?
제가 void 개념을 잘못 이해하고 있는 건가요?
안녕하세요.
void는 리턴 값이 없다는 의미는 맞습니다.
하지만 포인터 변수를 이용해 a의 주소를 x에 전달한다는 것은 a와 x가 같은 주소를 공유한다는 것이죠.
값을 전달할 때는 리턴의 개념이 중요하지만 주소를 전달하여 주소를 공유할 경우는 값을 리턴하지 않아도 메모리에 저장된 값이 변경되기 때문입니다.
교재 86쪽 예제3번이 포인트 변수를 사용한 메모리 값 변화를 그림을 통해 설명하였습니다.
이 부분을 우선 자세하게 학습하여 먼저 이해해 보세요.
이해 과정에서 난해한 부분이 있다면 질문주세요. 자세하게 답변드리겠습니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-29 09:17:46
안녕하세요.
void는 리턴 값이 없다는 의미는 맞습니다.
하지만 포인터 변수를 이용해 a의 주소를 x에 전달한다는 것은 a와 x가 같은 주소를 공유한다는 것이죠.
값을 전달할 때는 리턴의 개념이 중요하지만 주소를 전달하여 주소를 공유할 경우는 값을 리턴하지 않아도 메모리에 저장된 값이 변경되기 때문입니다.
교재 86쪽 예제3번이 포인트 변수를 사용한 메모리 값 변화를 그림을 통해 설명하였습니다.
이 부분을 우선 자세하게 학습하여 먼저 이해해 보세요.
이해 과정에서 난해한 부분이 있다면 질문주세요. 자세하게 답변드리겠습니다.
오늘도 즐거운 하루 되세요.