문제는 파일 첨부로 올렸습니다.
numAry가 지역변수인데 왜 init 메서드 연산후 값이 변하게 되었는지 입니다.
해당 행렬은 지역변수이고 static이 아닙니다 그냥 int numAry[] = {1,2,3,4,5}; 로 선언이 되어있습니다.
하위 init 메서드에서 return으로 반환하여 numAry에 갑을 대입하지도 않았는데 왜 init 메서드의 연산이 numAry에 변화를 주었는지 모르겠습니다.
따라서 저는 해당 답이 init 연산 값이 [1,3,5,7,9]로 바뀌었다해도 numAry[]는 지역변수로 [1,2,3,4,5]로 변함이 없다고 생각해서 정답이 15라고 생각했는데 왜 numAry행렬이 init 메서드 연산후 바뀌게 되었나요?
실전모의고사 1회 문제 9번에서는 메인 함수내 지역 변수 b의 값을 다른 메서드가 건드려도 값이 변화가 안되었었는데 여기서는 차이가 무엇인지 헷갈리네요.
안녕하세요 길벗수험서 운영팀입니다.
'배열명'을 인수로 보냈기 때문입니다.
기본적으로 배열명을 인수로 주고 받는 경우 해당 배열에 포함된 '값'들이 전달되는 것이 아닌 메모리의 '주소'가 전달됩니다.
때문에 init의 a는 numAry와 동일한 메모리의 주소를 갖게 되고, init 함수 내에서의 a 배열 내 값 변화는 numAry에도 영향을 주게 되는 것이죠.
행복한 하루되세요 :)
-
관리자2020-07-20 14:03:50
안녕하세요 길벗수험서 운영팀입니다.
'배열명'을 인수로 보냈기 때문입니다.
기본적으로 배열명을 인수로 주고 받는 경우 해당 배열에 포함된 '값'들이 전달되는 것이 아닌 메모리의 '주소'가 전달됩니다.
때문에 init의 a는 numAry와 동일한 메모리의 주소를 갖게 되고, init 함수 내에서의 a 배열 내 값 변화는 numAry에도 영향을 주게 되는 것이죠.
행복한 하루되세요 :)