▣ 안녕하세요 이번장에서는 포인터를 꼭 공부하고 진행해주세요.
메모리 주소에 대한 개념이 없으면 어렵습니다.
▣ 첫번째는 포인터를 이용해서 변수에 값을 바꿔보도록 하겠습니다.
int num = 10; 변수를 정의하고 int *으로 int에 주소를 저장하는 pNum를 주소를 선언해줍니다.
그리고 &num에 주소를 대입해서 넣어주세요
그리고 값과 주소를 출력하는 코드를 넣고
*pNum 포인터로 간접으로 접근해서 20으로 대입을 해주고 출력을 하면
주소가 동일한걸 확인할 수 있고, 값이 바뀐 것도 확인할 수 있습니다.
▣ 이부분을 C++에서는 더 직관적으로 사용하게 만든 게 레퍼런스 변수, 참조 변수입니다.
▣ 이번에는 C++에 레퍼런스변수로 주소를 저장해서 값을 바꿔보겠습니다.
쉽게 정의를 해보겠습니다. 포인터는 *기호로 했다면 C++에서는 &p
변수에 주소를 접근하는 기호처럼 선언하고 정의합니다.
int &pNum = num; 이렇게 하게 되면 num에 주소 값이 &pNum에 들어가게 됩니다.
그럼 * 이 기호를 넣지 않고 바로 pNum으로 값을 접근해서 num에 값을 간접으로
바꿀 수 있습니다.
▣ 이번에는 함수를 만들어 매개변수에 값을 전달하여 전달받은 변수에 값을 바꿔보도록 하겠습니다.
int num = 10;으로 코드를 정의하고 만든 함수에 매개변수로 변수를 전달한 다음에
함수에서 값을 바꾸고 main에서 다시 출력을 해보면 값이 안 바뀌는 걸 볼 수 있습니다.
그건 매개변수에 변수로 전달할때 값만 전달되었기 때문입니다.
▣ 이번에는 &num으로 매개변수에 주소를 전달해주고
매개변수에서 int* num으로 주소를 포인터로 받은 다음에 *num = 20으로 값일 바꾸고
출력을 해보면 함수에 위치가 다르더라도 주소를 통해서 값을 바꾸었기 때문에
main() 함수에 있는 변수 값이 바뀌는 걸 확인할 수 있습니다.
▣ 이번에는 레퍼런스변수를 전달해서 바꿔보겠습니다.
이것도 동일하게 포인터처럼 값이 바뀌는 걸 확인할 수 있습니다.
'[ C++ ] > - C++ 실습연습' 카테고리의 다른 글
C++ [템플릿_01, template, typename] (0) | 2021.08.19 |
---|---|
C++ [매크로, inline, #define] (0) | 2021.07.30 |
C++ [클래스_02, Class, get, set, 함수, 멤버함수, 멤버변수] (0) | 2021.07.21 |
C++ [클래스_01, Class, 객체, 멤버변수, 멤버함수, 접근지정자] (2) | 2021.07.20 |
C++ [namespace, 네임스페이스] (0) | 2021.07.16 |
댓글