본문 바로가기
[ C++ ]/- C++ 실습연습

C++ [레퍼런스변수, 포인터, 주소, 참조]

by MRG 2021. 7. 23.
728x90
반응형

▣ 안녕하세요 이번장에서는 포인터를 꼭 공부하고 진행해주세요.

메모리 주소에 대한 개념이 없으면 어렵습니다. 

 

▣ 첫번째는 포인터를 이용해서 변수에 값을 바꿔보도록 하겠습니다.

int num = 10; 변수를 정의하고 int *으로 int에 주소를 저장하는 pNum를 주소를 선언해줍니다.

그리고 &num에 주소를 대입해서 넣어주세요 

그리고 값과 주소를 출력하는 코드를 넣고

*pNum 포인터로 간접으로 접근해서 20으로 대입을 해주고 출력을 하면 

주소가 동일한걸 확인할 수 있고, 값이 바뀐 것도 확인할 수 있습니다. 

 

▣ 이부분을 C++에서는 더 직관적으로 사용하게 만든 게 레퍼런스 변수, 참조 변수입니다. 

 

▣ 이번에는 C++에 레퍼런스변수로 주소를 저장해서 값을 바꿔보겠습니다.

쉽게 정의를 해보겠습니다. 포인터는 *기호로 했다면 C++에서는 &p 

변수에 주소를 접근하는 기호처럼 선언하고 정의합니다. 

int &pNum = num; 이렇게 하게 되면 num에 주소 값이 &pNum에 들어가게 됩니다.

그럼 * 이 기호를 넣지 않고 바로 pNum으로 값을 접근해서 num에 값을 간접으로 

바꿀 수 있습니다. 

 

▣ 이번에는 함수를 만들어 매개변수에 값을 전달하여 전달받은 변수에 값을 바꿔보도록 하겠습니다.

int num = 10;으로 코드를 정의하고 만든 함수에 매개변수로 변수를 전달한 다음에 

함수에서 값을 바꾸고 main에서 다시 출력을 해보면 값이 안 바뀌는 걸 볼 수 있습니다.

그건 매개변수에 변수로 전달할때 값만 전달되었기 때문입니다. 

728x90

▣ 이번에는 &num으로 매개변수에 주소를 전달해주고 

매개변수에서 int* num으로 주소를 포인터로 받은 다음에 *num = 20으로 값일 바꾸고 

출력을 해보면 함수에 위치가 다르더라도 주소를 통해서 값을 바꾸었기 때문에

main() 함수에 있는 변수 값이 바뀌는 걸 확인할 수 있습니다. 

 

▣ 이번에는 레퍼런스변수를 전달해서 바꿔보겠습니다.

이것도 동일하게 포인터처럼 값이 바뀌는 걸 확인할 수 있습니다.

728x90
반응형

댓글