#포인터와 참조(reference)

Programming 2017. 11. 10. 20:40

포인터 사용의 이유

1. function(int* x) { *x = 5; }

2. function(int x) { x = 5; }

가 있고,

int y;

function(y)

return y;

로 함수를 호출 할 때, 1번과 같이 포인터를 사용한 경우의 return y의 결과는 5로 바뀌지만, 2의 경우는 그렇지 않다. 2에서 결과를 5로 바꾸고 싶다면,

function(int x) { x=5; return 5; } (x=5;는 생략 가능하다.)

y = function(y)

처럼 작성해야 한다.

이처럼 포인터는 함수를 사용하여 데이터를 조작할 때 유용하다. 특히나 배열의 경우에는 iterate에 따른 데이터 변경 시에 추가적인 메모리에 접근하지 않고도 조작이 가능하다.

 

참조 대표적인 특징

참조는 포인터와 비슷하긴 하지만, null 포인트를 허용하지 않을 뿐만 아니라, 포인터 보다 부작용(side-effect) 효과가 크다. 예를 들어,

class &A=1;

class &B=2;

class &C=A;

처럼 작성된 클래스가 실행된 후, CB를 할당하는 C = B 라는 코드를 작성하고 실행하면, A에도 B가 할당된다. 포인터로 선언되었다면 C = B 코드가 실행되어도 CB만 같을 뿐, AA일 뿐이다.

admin