[CPP]제 5장. Reference(참조자)에 대한 이해 - garyGitgit/mywiki GitHub Wiki
퀴즈 : 다음 질문에 답을 하시오
- 키워드 const 의 의미
- 상수 변수 num
const int num = 10;
- 포인터 상수 변수 ptr1. ptr1 을 활용해서 va1 의 값을 변경할 수 없음
const int *ptr1 = &val1;
- 상수 포인터 변수 ptr2. ptr2 값 자체가 고정
int * const ptr2 = &val2;
- 상수 포인터 상수 변수. ptr3로 val3의 값을 변경할 수 없고, ptr3도 변경할 수 없음
const int * const ptr3 = &val3;
말이 애매하긴 하지만, 어떤 값을 바꾸고 못 바꾸는지 주목하면 된다
- 실행 중인 프로그램의 메모리 공간
- stack : 지역변수 및 파라미터 등이 저장되는 공간
- heap : run time 시 동적으로 생성되는 공간
- data : 코드, 전역변수 등이 저장되는 공간
- malloc : 동적 메모리 할당
- free : 동적 메모리 제거. malloc 으로 할당된 메모리 공간은 free 해주지 않으면 없어지지 않는다.
call by value
vscall by reference
call by value
는 파라미터로 값을 복사해주는 것이고,call by reference
는 파라미터로 주소를 전달한다. 그래서call by value
는 추가적인 공간을 필요로 하고,call by reference
는 기존에 있는 값을 가리키는 주소만 넘겨주기 때문에 새로운 공간을 필요로 하지 않는다 (포인터 변수만 있으면 된다. 예를 들어 크기가 매우 큰 vector 에 대해서는매번call by value
를 하면 메모리를 많이 잡아먹지만,call by reference
를 하면 메모리 공간을 벡터크기만큼 할당하지 않아도 된다.)