책 내용 질문하기
실전모의고사 1회 9번, 실전모의고사 2회 10번 문제의 해설이 엇갈리는 것 같습니다. 도와주세요.
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
0
조회수
190
작성일
2020-07-23
작성자
탈퇴*원

1회 9번 문제 정답해설의 11번 설명에서 'b는 메소드 안에서 선언된 지역 변수이므로 cal() 메소드를 벗어나면 소멸한다.'라는 문장이 이해되었고, 제일 아래 쪽의 '※ main() 메소드에서 ~~~ b의 초기값인 2가 그대로 출력됩니다.' 이 문장도 온전히 이해되었습니다. 

 

그리고 2회 10번 문제 정답해설의 5번 설명까지는 온전히 이해되었습니다(배열 a에 1, 3, 5, 7, 9 가 저장되는 것).

 

그런데 6번 설명의 prnt(numAry)에서 왜 값이 바뀐 배열로 numAry가 적용되는 겁니까?

 

1회 9번 문제처럼 변경된 값이 원래의 numAry에는 반영이 안되어서, prnt(numAry)의 결과는 원래의 배열 1, 2, 3, 4, 5의 값을 더한 15가 출력되어야 하는게 아닙니까?

 

자세한 설명 부탁드립니다..

답변
2020-07-23 13:16:44

안녕하세요 길벗수험서 운영팀입니다.

 

(지역 변수에 한정하여)

각 변수를 함수(메소드)의 인수로 보낼 때는 해당 값의 변화가 존재할 수 없습니다.

인수로 보내지는 것은 정확히는 변수가 아닌 변수에 저장된 '값' 이기 때문이죠.

 

하지만 배열, 리스트 등의 개체는 전송시 '값'이 저장된 변수명이 아닌 '주소'가 저장된 배열명 또는 리스트명을 인수로 보냅니다.

2회의 문제 10번처럼 init(numary)는 numary라는 배열의 첫번째 주소를 보내게 되죠.

(배열명, 리스트명은 개체의 요소들이 저장된 메모리의 첫번째 주소를 저장하고 있습니다.)

 

함수에서 이 주소를 받은 배열이나 리스트는 main 함수(메소드)에서 인수로 사용된 배열이나 리스트와 동일한 메모리 주소를 갖게되고, 이로인해 함수에서 변경된 내역들은 return이 없어도 본래 인수로 사용되었던 main 함수의 배열이나 리스트에도 영향을 주게되는 것이죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-23 13:16:44

    안녕하세요 길벗수험서 운영팀입니다.

     

    (지역 변수에 한정하여)

    각 변수를 함수(메소드)의 인수로 보낼 때는 해당 값의 변화가 존재할 수 없습니다.

    인수로 보내지는 것은 정확히는 변수가 아닌 변수에 저장된 '값' 이기 때문이죠.

     

    하지만 배열, 리스트 등의 개체는 전송시 '값'이 저장된 변수명이 아닌 '주소'가 저장된 배열명 또는 리스트명을 인수로 보냅니다.

    2회의 문제 10번처럼 init(numary)는 numary라는 배열의 첫번째 주소를 보내게 되죠.

    (배열명, 리스트명은 개체의 요소들이 저장된 메모리의 첫번째 주소를 저장하고 있습니다.)

     

    함수에서 이 주소를 받은 배열이나 리스트는 main 함수(메소드)에서 인수로 사용된 배열이나 리스트와 동일한 메모리 주소를 갖게되고, 이로인해 함수에서 변경된 내역들은 return이 없어도 본래 인수로 사용되었던 main 함수의 배열이나 리스트에도 영향을 주게되는 것이죠.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.