책 내용 질문하기
1권 128쪽 39번 문제
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
128
조회수
105
작성일
2019-09-27
작성자
탈퇴*원
첨부파일

return 값에 대한 이해가 잘 안 됩니다.

39번 문제에선 함수 prnt()에 return 값이 없는데, 결과에 값이 반영되었습니다.

하지만 88쪽 설명을 보면, 사용자 정의 함수에 return 값이 없으면 결과에 반영되지 않는다고 설명이 되어 있습니다.

그래서 39번 문제처럼 메인 함수와 사용자 정의 함수의 변수가 같으면 return값이 없어도 반영이 되나 싶었지만,

109쪽을 설명을 보면 메인 함수와 사용자 정의 함수의 변수가 같은데도 return값을 주어 결과에 반영했습니다.

 

왜 39번 문제에선 return값이 없는데, 함수 prnt() 값이 결과에 반영되었나요? 

답변
2019-09-30 10:55:19

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

 

함수에서 반환(return)이 없어도 값이 변하는 경우를 확실히 파악해두세요.

 

1. 포인터를 인수로 하는 경우

배열 포인터, 변수 포인터, 객체와 같은 것들은 직접 값을 전달하는 것이 아닌 주소값을 전달하여 메모리에서 해당 주소에 저장된 값들을 직접 수정하게 됩니다.

이 경우 반환받지 않아도 함수에서 main으로 돌아왔을 때, 이미 사용하던 메모리의 값들이 변경되어 있어 return 없이 값이 변형된 경우가 되겠죠.

 

2. 전역변수를 사용하는 경우

이 경우도 위와 경우는 다르지만 마찬가지의 결과를 끌어냅니다.

전역변수의 특성상 동일한 변수명은 다른 함수나 메소드에서 사용할 수 없습니다. 이것은 이 변수들의 변화가 모든 함수나 메소드에 영향을 미치기 때문이죠.

인수나 리턴(return)에 관계없이 전역변수의 값은 변경되면 어디에서도 동일하게 적용됩니다.

 

39번 문제의 경우 1에서 객체를 인수로 전달한 경우로, 메모리의 해당 값들이 직접 변경되어 리턴 없이 메인에서도 적용된 경우입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-09-30 10:55:19

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

     

    함수에서 반환(return)이 없어도 값이 변하는 경우를 확실히 파악해두세요.

     

    1. 포인터를 인수로 하는 경우

    배열 포인터, 변수 포인터, 객체와 같은 것들은 직접 값을 전달하는 것이 아닌 주소값을 전달하여 메모리에서 해당 주소에 저장된 값들을 직접 수정하게 됩니다.

    이 경우 반환받지 않아도 함수에서 main으로 돌아왔을 때, 이미 사용하던 메모리의 값들이 변경되어 있어 return 없이 값이 변형된 경우가 되겠죠.

     

    2. 전역변수를 사용하는 경우

    이 경우도 위와 경우는 다르지만 마찬가지의 결과를 끌어냅니다.

    전역변수의 특성상 동일한 변수명은 다른 함수나 메소드에서 사용할 수 없습니다. 이것은 이 변수들의 변화가 모든 함수나 메소드에 영향을 미치기 때문이죠.

    인수나 리턴(return)에 관계없이 전역변수의 값은 변경되면 어디에서도 동일하게 적용됩니다.

     

    39번 문제의 경우 1에서 객체를 인수로 전달한 경우로, 메모리의 해당 값들이 직접 변경되어 리턴 없이 메인에서도 적용된 경우입니다.

     

    행복한 하루되세요 :)

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