본문 바로가기

c++

c++에서 레퍼런스와 포인터의 차이를 알아보자

C++에서 레퍼런스와 포인터는 모두 메모리 주소를 저장하고 참조하는 방법입니다. 하지만 레퍼런스와 포인터는 몇 가지 중요한 차이점이 있습니다.

 

1.선언 방법

레퍼런스는 선언할 때 '&'를 사용합니다.

 

포인터는 '*'를 사용하여 선언합니다.

 

2.NULL 값

레퍼런스는 NULL 값을 가질 수 없습니다. 한 번 참조한 변수를 계속 참조합니다.

포인터는 NULL 값을 가질 수 있습니다. NULL은 포인터가 어떤 것도 가리키지 않음을 나타냅니다.

 

3.참조 대상 변경

레퍼런스는 참조 대상을 변경할 수 없습니다. 참조는 선언과 함께 참조 대상을 지정합니다.

포인터는 참조 대상을 변경할 수 있습니다. 포인터는 언제든지 다른 메모리 위치를 가리킬 수 있습니다.

 

4.연산자 사용

레퍼런스는 포인터 연산자(*, ->)를 사용할 필요가 없습니다. 참조 연산자(&)를 사용하여 변수의 참조를 얻습니다.

포인터는 포인터 연산자(*, ->)를 사용하여 참조 대상의 값을 가져올 수 있습니다.

둘 다 사용 가능한 연산자로는 주소 연산자(&)와 비교 연산자(==, !=)가 있습니다.

결론적으로, 레퍼런스와 포인터는 모두 변수의 주소를 참조하는 방법입니다. 하지만 레퍼런스는 보다 직관적이고 간결한 코드를 작성할 수 있고, 포인터는 유연성이 높고 포인터 연산 등의 다양한 기능을 지원합니다.