안녕하세요? 공대남 입니다. 오늘은 C++ 참조자에 관하여 알아보겠습니다.

참조자는 포인터와 비슷한 성격을 띄지만 다른 개념입니다.

그리고 포인터와 참조자의 차이점에 대해서도 알아보도록하겠습니다.

C언어에서는 다루지 않았기 때문에, 처음 접하시면 햇갈리실 수도 있습니다.

차례

1. 참조자의 개념

2. 참조자와 포인터의 차이

1. 참조자의 개념

변수는 할당된 메모리 공간에 붙여진 이름입니다.

num1 = 10; 과 같습니다.

여기에 이름을 더 부여할 수 있습니다.

참조자는 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름입니다.

간단히 말하면 별칭같은 것 입니다.

위의 코드를 보겠습니다.

참조자는 & 을 이용하여 선언합니다

이미 선언된 변수의 앞에 이 연산자가 오면 주소 값의 반환을 명령하는 뜻이지만,

새로 선언되는 변수의 이름 앞에 오면 참조자의 선언을 뜻하게 됩니다.

그래서 int &num2 = num1; 과 같이 선언합니다.

num1에 num2라는 참조자를 선언했습니다. 이 코드를 실행해보겠습니다.

num2에 다가 10을 더해 줬기 때문에 num1도 20으로 출력됩니다.

num2가 num1의 다른이름이라고 생각하시면 좀 더 잘 이해가됩니다.

즉 num2는 num1의 다른이름이고 num2를 변화시키는 것은 num1을 변화 시키는 것 입니다.

또 레퍼런스는 하나의 변수에 다수의 참조자를 선언할 수 있습니다.

int &num2 = num1;

int &num3 = num1;

int &num4 = num1;

다음과 같이 선언하면 하나의 변수에 다향한 레퍼런스를 선언할 수 있습니다.

-

2. 참조자와 포인터의 차이

(1) 포인터는 NULL 값이 있지만, 참조나는 NULL 값이 없다.

NULL값이란, 결정되지 않거나 모르는 값을 의미합니다.

하지만 참조자는 선언시 바로 초기화 해주어야 합니다.

(2) 참조자는 변수를 입력 받고 포인터는 주소값을 입력 받는다.

(3) 참조자는 한번 지정한 객체를 변경할 수 없지만, 포인터는 가능하다.

참조자는 한번 객체를 정하면 바꿀 수 없습니다.

하지만 포인터의 경우 주소값을 변경하여 바꿀 수 있습니다.

다음과 같은 차이점이 있습니다.

공통점은 둘 다 다른 객체(변수)를 간접적으로 참조한다는 것 입니다.

처음 참조자를 접하신다면 햇갈리실테니 차이점을 숙지하고 계시면 쉽게 이해가 될 것입니다.

-

간단하게 레퍼런스의 개념과 레퍼런스와 참조자의 차이점과 공통점에 대해서 알아보았습니다.

저는 C언어의 포인터와 개념이 비슷해서 처음에 햇갈렸지만, 차이점을 알고나니 잘 이해가 되었습니다.

이번 정보는 유용하셨나요? 다음번 강의에는 좀 더 유용하고 좋은글로 찾아 뵙도록하겠습니다. 감사합니다!


+ Recent posts