c++ 포인터와 참조

강효림·2023년 5월 14일
0

c++

목록 보기
2/8

포인터는 원래 c언어부터 존재해서 개념을 어느정도 알고있지만 참조는 c++에서 생겨난 것이기 때문에 처음 들어봤다.

포인터

일단 포인터는 변수의 주소를 가리키며 변수명 앞이나 타입 뒤에 *을 붙여 사용한다.
int* p 혹은 int *p

포인터에 주소를 넣을 때는 &를 사용해 값을 넣어주고 대입과 복사가 가능하다.
또한 포인터 하나가 여러 객체를 가리킬 수 있다.

참조(레퍼런스)

참조는 포인터와 약간 다르다.
해당 변수에 대해 다른이름을 선언하는 것이다.
변수 p에 별명이 pa라고 생긴 것이라고 생각하면 이해하기 빠르다.
그러면 pa에 값을 넣으면 p에도 똑같은 값이 들어가게 된다.

참조변수는 &가 변수의 왼쪽에 있다.
int &p

포인터는 하나가 여러객체를 가리킬 수 있지만 참조는 불가능하다.
오직 하나의 변수만 참조가 가능하고 다른 변수는 참조가 불가능하다.

참조자의 타입과 참조되는 변수의 타입은 무조건 같아야한다.
또 참조자는 오직 객체와 결합할 수 있다.

⭐ 가장 큰 차이점

포인터가 가리키는 변수와 포인터의 타입이 같더라도 포인터 변수의 주소값과 대상의 주소값은 다르지만 참조는 모두 같다.

변수 int a
포인터 int *pa

&a != &pa
a == &pa

변수 int a
참조변수 int &re

&a == &pa
a == &pa

0개의 댓글