[CPP]제 5장. Reference(참조자)에 대한 이해 - garyGitgit/mywiki GitHub Wiki

퀴즈 : 다음 질문에 답을 하시오

  • 키워드 const 의 의미
  1. 상수 변수 num
const int num = 10;
  1. 포인터 상수 변수 ptr1. ptr1 을 활용해서 va1 의 값을 변경할 수 없음
const int *ptr1 = &val1;
  1. 상수 포인터 변수 ptr2. ptr2 값 자체가 고정
int * const ptr2 = &val2;
  1. 상수 포인터 상수 변수. ptr3로 val3의 값을 변경할 수 없고, ptr3도 변경할 수 없음
const int * const ptr3 = &val3;

말이 애매하긴 하지만, 어떤 값을 바꾸고 못 바꾸는지 주목하면 된다

  • 실행 중인 프로그램의 메모리 공간
    • stack : 지역변수 및 파라미터 등이 저장되는 공간
    • heap : run time 시 동적으로 생성되는 공간
    • data : 코드, 전역변수 등이 저장되는 공간
    • malloc : 동적 메모리 할당
    • free : 동적 메모리 제거. malloc 으로 할당된 메모리 공간은 free 해주지 않으면 없어지지 않는다.
  • call by value vs call by reference
    • call by value 는 파라미터로 값을 복사해주는 것이고, call by reference 는 파라미터로 주소를 전달한다. 그래서 call by value 는 추가적인 공간을 필요로 하고, call by reference 는 기존에 있는 값을 가리키는 주소만 넘겨주기 때문에 새로운 공간을 필요로 하지 않는다 (포인터 변수만 있으면 된다. 예를 들어 크기가 매우 큰 vector 에 대해서는매번 call by value 를 하면 메모리를 많이 잡아먹지만, call by reference 를 하면 메모리 공간을 벡터크기만큼 할당하지 않아도 된다.)