인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

이은비님의 프로필 이미지

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 2회 코드해석 문제

14:39 질문드립니다.

해결된 질문

작성

·

50

0

덮어씌워진다는게 이해가 안되서요! test1 = name();이 실행되었을때 홍길동이 입력되면 return 되는 값은 홍길동 아닌가요??

  • 질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야

    어떤 강좌에서 질문하셨는지 알 수 있습니다.

  • 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다.

  • 이미 다른 누군가가 질문을 한 이력이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다.

  • 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다.

  • 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다.

    • 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산)

  • 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

덮어 씌워진다는 의미는 test1, test2, test3이 모두 같은 메모리 위치(n 배열)를 가리키기 때문에 그렇습니다.

지금은 char n[30]을 선언해두고 n이라는 변수에다가 입력을 받습니다.

그렇게 test1에 넣었는데, 다음 test2인 부분에서 똑같은 메모리 주소에다가 다시 입력을 받습니다.

그러면 원본이 바뀌어버립니다. 해당 변수의 메모리에 직접 접근했기 때문입니다.

값을 리턴해서 저장해놓은 것이 아니라, 해당 변수의 메모리 시작주소에 접근했기 때문에 계속 덮어씌워집니다.

현재 상황)

name() 함수는 항상 동일한 메모리 위치인 n 배열의 주소를 반환합니다.

각 줄 해석)

첫 번째 호출에서 test1 = name()이 실행되면:

  • 사용자 입력값(예: "홍길동")이 n 배열에 저장됩니다.

  • test1은 n 배열의 주소를 가리킵니다.

두 번째 호출에서 test2 = name()이 실행되면:

  • 새 사용자 입력값(예: "김철수")이 같은 n 배열에 저장됩니다.

  • 이전에 저장된 "홍길동"은 지워지고 "김철수"로 덮어씌워집니다.

  • test2도 n 배열의 주소를 가리킵니다.

  • test1과 test2는 이제 둘 다 같은 n 배열(현재는 "김철수"가 들어있는)을 가리킵니다.

세 번째 호출에서 test3 = name()이 실행되면:

  • 또 새 사용자 입력값(예: "박영희")이 같은 n 배열에 저장됩니다.

  • 이전의 "김철수"는 지워지고 "박영희"로 덮어씌워집니다.

  • test3도 n 배열의 주소를 가리킵니다.

  • test1, test2, test3 모두 같은 n 배열(현재는 "박영희"가 들어있는)을 가리킵니다.

최종적으로 printf 문이 실행될 때, test1, test2, test3 모두 동일한 메모리 위치를 가리키므로 세 변수 모두 마지막 입력값인 "박영희"가 출력됩니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이은비님.

질문해주신 내용은 특정 함수 호출 시의 반환 값과 그 이해에 관한 것 같습니다. 강의에서 다루고 있는 특별한 함수 호출 시, name() 함수가 호출되어 홍길동이 반환되는 부분에 대한 이해가 필요하다고 누르신 것 같습니다.

주요 개념 설명

  1. 함수 호출 및 반환 값: 일반적으로 함수가 호출될 때, 그 함수의 처리 결과로 특정 값 또는 객체가 반환됩니다. test1 = name(); 코드에서 name() 함수가 호출되면, 그 함수가 실행 결과를 반환하게 됩니다. 만약 이 함수 내부에서 값을 변경하고자 한다면 변수의 스코프 및 함수 구조를 잘 이해해야 합니다.

  2. 초기화와 덮어쓰기: 변수에 새로운 값을 할당할 때, 이전에 저장된 값은 자동으로 덮어씌워지게 됩니다. 이는 메모리 상에서 새로운 값으로 업데이트되며, 그 후로는 새로운 값을 참조하게 됩니다.


질문에 대한 보다 명확한 답변을 제공하기 위해 유사한 질문과 답변을 찾아보았습니다. 다음 링크들을 통해 강의와 직접적으로 관련된 비슷한 질문들을 확인해 보실 수 있습니다.

  1. 함수와 변환 값 관련 질문 - 함수의 반환값 이해를 돕기 위한 기본 개념이 설명되어 있습니다.

  2. 자바, 파이썬 등에서의 함수 호출 방식 - 다양한 언어에서의 함수 호출과 그 반환에 대해 다루고 있습니다.

위의 링크들을 통해 관련된 예제와 설명을 확인하시면, 이해에 도움이 될 것입니다. 만약 답변이 충분히 명쾌하지 않거나 추가적인 상세한 설명이 필요하시면, 다시 질문해 주시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.