책 내용 질문하기
밑에 void이어서 질문할게요!
도서
2023 시나공 정보처리기능사 실기
페이지
0
조회수
189
작성일
2023-08-09
작성자
김*훈
첨부파일

같은해 기출문제 1번문제보면

여기서는 hrd(myint)를 호출해서 static void hrd~~로 이동해서

수행후에 값들을 저장해서, 그러니깐 18이하는 답을 가지고 다시올라와서

메인문에 출력조건에맞춰출력되는데(void라고 되있는데도)

 

문제 18번은 메인에 저장되어오는값이없는데

이차이점이 정확히 모르겠네요,,

 

언제는 void가 있어서 저장하지않고 돌아온다하고

언제는 void가 다있어도 값을 저장해서 출력하고,,

 

이해좀시켜주세요제발~

답변
2023-08-10 09:41:46

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

 

기본적으로 void는 돌려주는 값이 없으므로 메소드 연산을 하건 출력을 하건 혼자 끝나버립니다.

main()에 영향을 줄 수가 없죠.

 

하지만 예외적인 경우가 있습니다.

메소드는 인수를 전달하죠. 인수로 변수의 값이나 상수를 전달하면 아무 문제 없습니다.

하지만 인수로 주소를 전달하게 되면 메소드에서 메모리의 값을 직접 변경하기 때문에 메소드에서의 값 변화가 main()에도 영향을 주게 됩니다.

주소가 인수로 전달되는 경우는 배열, 리스트, 클래스 등의 객체, 포인터 가 있습니다.

 

문제 1번은 Myint라는 TestClass의 객체 변수가 인수로 지정된 경우로,
hrd(Myint); 코드는 Myint가 저장된 메모리의 주소를 hrd() 메소드에 전달하라는 의미이고,

주소를 전달받은 hrd() 메소드에서는 메모리에서 Myint의 값들을 직접 변경하게 되니, 이 영향이 main()에게까지 가서 값 변화가 다음 println문에게까지 반영된 것이죠.

 

정리하자면,

기본적으로 void 메소드는 main()에 영향을 줄 수 없으나,

예외적으로 주소가 메소드로 전달되는 경우 메모리의 값이 직접 변경되기 때문에 main()에 영향이 간다. 가 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2023-08-10 09:41:46

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

     

    기본적으로 void는 돌려주는 값이 없으므로 메소드 연산을 하건 출력을 하건 혼자 끝나버립니다.

    main()에 영향을 줄 수가 없죠.

     

    하지만 예외적인 경우가 있습니다.

    메소드는 인수를 전달하죠. 인수로 변수의 값이나 상수를 전달하면 아무 문제 없습니다.

    하지만 인수로 주소를 전달하게 되면 메소드에서 메모리의 값을 직접 변경하기 때문에 메소드에서의 값 변화가 main()에도 영향을 주게 됩니다.

    주소가 인수로 전달되는 경우는 배열, 리스트, 클래스 등의 객체, 포인터 가 있습니다.

     

    문제 1번은 Myint라는 TestClass의 객체 변수가 인수로 지정된 경우로,
    hrd(Myint); 코드는 Myint가 저장된 메모리의 주소를 hrd() 메소드에 전달하라는 의미이고,

    주소를 전달받은 hrd() 메소드에서는 메모리에서 Myint의 값들을 직접 변경하게 되니, 이 영향이 main()에게까지 가서 값 변화가 다음 println문에게까지 반영된 것이죠.

     

    정리하자면,

    기본적으로 void 메소드는 main()에 영향을 줄 수 없으나,

    예외적으로 주소가 메소드로 전달되는 경우 메모리의 값이 직접 변경되기 때문에 main()에 영향이 간다. 가 됩니다.

     

    행복한 하루되세요 :)

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