박오이님
무미건조한 개발자
박오이님
전체 방문자
오늘
어제
  • 뭥미 (101)
    • 프로젝트 (8)
      • 자가 보호 (3)
      • 주식 시장 분석 도구 (5)
    • 보안 (7)
      • 개론 (2)
      • 웹 (2)
      • 시스템 (2)
    • 개발 (69)
      • C++ (12)
      • Win32 (7)
      • MFC (2)
      • 자료구조 (8)
      • 알고리즘 (22)
      • 백준 (9)
      • 프로그래머스 (4)
      • LeetCode (0)
      • 개발자 면접 준비 (4)
      • OpenGL (1)
    • 서적 (13)
      • Effective C++ (9)
      • Effective Modern C++ (4)
    • 관심사 (4)
      • 재테크 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 나동빈 #알고리즘 #동빈나
  • 플로이드와샬알고리즘 #최단경로 #백준 #알고리즘 #개발 #C #C++
  • EffectiveC++
  • 에라토스테네스의 체 #알고리즘 #개발 #C #C++ #소수 #소수판별
  • 안경잡이개발자
  • vcpkg
  • C++
  • C
  • 프로세스메모리
  • 에라토스테네스의 체 #C #C++ #개발 #알고리즘 #BFS #DFS #백준 #백준알고리즘
  • Functional
  • 알고리즘
  • 윈도우시스템프로그래밍
  • std
  • 윈도우개발자
  • 시스템프로그래밍
  • 크루스칼알고리즘
  • 합집합찾기
  • JSON
  • 동빈나
  • 백준 #알고리즘 #플로이드와샬 #DFS #BFS #C #C++
  • jsoncpp
  • 윈도우프로그래밍
  • 윈도우
  • CPP
  • 나동빈
  • 코딩컨벤션
  • 최소간선비용
  • 개발
  • DFS #BFS #알고리즘 #프로그래밍 #코딩테스트 #코딩 #C++ #C

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
박오이님

무미건조한 개발자

개발/개발자 면접 준비

Call by Value, Call by Reference

2019. 10. 1. 23:16

콜 바이 밸류, 콜 바이 레퍼런스 많이 들어 봤다.
이 글을 쓰기 위해 공부를 하면서 Call by Address, Call by Assignment 등을 들어봤다. 
그러나 언어에 따른 차이점인 것 같아 크게 들어본 Value, Reference에 대해서만 언급하기로 한다.
--> 추후, 프로그래밍 언어 공부에 따라 다른 부분도 필요하면 업로드할 예정.

항상 말하지만, 정확한 정의, 해석 전달을 해주고 싶다. 그러나 능력이 부족해 올바르게 전달하지 못할 수 있다.
그래서 댓글이나 연락을 준다면 꼭 수렴해 변경하고 싶다.

먼저, 각 정의부터 정리하고, 차이점을 짚어주겠다.

함수 호출방식에 따른 단어.

1. Call by value ( 값에 의한 호출 )
- C++ 경우, 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. ( == Stack Frame)
( 이렇게 생성된 함수가 종료되면 해당 메모리 공간은 사라진다 )
- 함수 호출 시, 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다.
--> 전달하는 변수의 값을 Stack Frame의 변수에 복사해 인자로 전달하는 것.
- 따라서 함수 안에서 인자의 값이 변경하거나, 변경되어도 외부의 변수의 값은 변경되지 않는다.
흠, 자바의 경우 데이터 타입에 따라서 다르다고 하는데, C++ 입장에서 써보려고 한다.

2. Call by reference ( 참조에 의한 호출 )
- 함수 호출 시, 인자로 전달하는 변수의 레퍼런스를 전달한다. ( 해당 변수를 가리킨다 )
--> 포인터 느낌이랄까?

Keyword : Stack Frame
- 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
- 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.

저작자표시 (새창열림)

'개발 > 개발자 면접 준비' 카테고리의 다른 글

빌드과정 ( 전처리, 컴파일, 어셈블리, 링킹 )  (0) 2019.11.07
x64와 x86의 차이  (0) 2019.10.13
Procedure, Function  (0) 2019.10.02
    '개발/개발자 면접 준비' 카테고리의 다른 글
    • 빌드과정 ( 전처리, 컴파일, 어셈블리, 링킹 )
    • x64와 x86의 차이
    • Procedure, Function
    박오이님
    박오이님
    긍정도 아니고 부정도 아닌 0

    티스토리툴바