<extern>
앞서 얘기한 전역 변수의 경우 하나의 cpp 내부에서만 사용이 가능하다. 이를 다른 cpp에서도 사용이 가능하게 하기 위해선 전역 변수를 선언할 때, extern 키워드를 추가하여 붙이면 다른 cpp에서도 해당 변수를 사용할 수 있다.
<Call by Value / Address / Reference>
Call by Value - 기본적으로 C언어에서 지원하는 방식이다. 함수를 호출할 때, 인자로 넘겨준 변수의 값을 함수 내부에 사용하는 매개 변수에 복사한다. 이 경우 원래 인자로 넘겨준 변수와 매개 변수로 사용하는 변수는 완전히 다른 변수이기 때문에 매개 변수의 값이 변경된다고 하더라도 인자로 넘겨준 변수의 값은 변하지 않는다.
원본 값을 변경할 필요가 없는 함수의 경우 Call by Value의 방식을 사용한다.
Call by Address - 함수의 매개 변수로 포인터 타입 변수를 받는다. 함수가 호출되면서 받아온 매개 변수의 값은 인자로 호출된 포인터 변수이기 때문에 특정 변수의 주소값을 넘겨준다. 때문에 함수 내부에서 매개 변수로 받아온 포인터 변수가 참조하고 있는 값이 변경될 경우 원본 주소에 영향이 그대로 넘어가기 때문에 함수가 종료되면 값이 변경된 채로 유지가 된다.
Call by Reference - C++ 언어에서 추가된 개념이다. 함수의 매개 변수 인자로는 int&와 같은 레퍼런스 형태를 받게 된다. &는 해당 변수에 별명을 붙인다고 생각하면 쉽다. 만약 함수는 int& reference라는 매개 변수를 가지고 함수를 호출할 때 인자로 int num이라는 변수를 주게 된다면 함수가 호출될 때 변수 reference는 num이라는 별명을 가지게 되어 변수 num과 같은 메모리 공간을 공유하게 된다.
때문에 함수에서 reference의 값을 변경하게 되면 같은 공간을 공유하고 있는 것이기 때문에 함수가 종료된 뒤 num을 확인해보면 변경된 값이 저장되어 있음을 확인할 수 있다.
<auto>
auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. 이 키워드를 사용하면 초깃값의 형식에 맞춰 선언하는 인스턴스(변수)의 형식이 자동으로 결정된다. 이것을 타입 추론이라고 한다.
auto 키워드는 변수를 초기화 할 때만 작동한다. 초기화 값을 사용하지 않고 생성된 변수는 이 기능을 사용할 수 없다.
'프로그래밍 > 키워드 정리' 카테고리의 다른 글
[C++] 복습용 키워드 정리 - 6 (0) | 2023.03.22 |
---|---|
[C++] 복습용 키워드 정리 - 5 (0) | 2023.03.14 |
[C++] 복습용 키워드 정리 - 4 (0) | 2023.03.13 |
[C++] 복습용 키워드 정리 - 3 (0) | 2023.03.12 |
[C++] 복습용 키워드 정리 - 1 (0) | 2023.03.08 |
댓글