게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

[숙제 4] Exercise 1 질문입니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2025)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이상우1



가입: 2025년 3월 6일
올린 글: 1

올리기올려짐: 2025년4월12일 20:51    주제: [숙제 4] Exercise 1 질문입니다. 인용과 함께 답변

RECORD의 의미구조를 보면 레코드는 Record of (id -> Loc.t) 형태로 구현되어 있습니다.
만약 레코드를 값으로 입력받고 그 레코드를 수정하는 함수를 생각해 보면 보통 값으로 입력받은 대상에 대해 deep copy를 하므로 함수 외부에서는 그 수정이 반영되지 않아야 합니다.
그러나 CALLV 의 의미구조에 따르면, CALLV로 레코드를 넘기면 값 자체는 복사되지만 내부의 주소 매핑 함수는 기존 주소를 공유하므로 그 함수는 레코드의 원본을 수정하게 됩니다.
이 경우, CALLV의 의미구조를 어떻게 이해하는 것이 옳을까요?
위로
사용자 정보 보기 비밀 메시지 보내기
안중원
Site Admin


가입: 2023년 3월 13일
올린 글: 11

올리기올려짐: 2025년4월13일 2:29    주제: Re: [숙제 4] Exercise 1 질문입니다. 인용과 함께 답변

안녕하세요,

질문에서 해석하신 대로의 실행의미가 맞습니다.
CALLV로 레코드를 넘기면 각 필드의 주소들도 그대로 넘어가므로, 함수 안에서 레코드를 수정한 내용(RECASSIGN)이 함수 밖에서도 반영되게 됩니다.

추가로, CALLV와 CALLR의 결정적인 차이점은 함수 안에서 변수를 수정했을 때(ASSIGN) 함수 밖의 변수에도 반영되는지의 여부라고 보시면 됩니다.

감사합니다.
_________________
TA 안중원
e-mail: jwahn@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2025) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay