포인터
내위키
Pointer.
프로그래밍 언어에서 다른 변수(클래스를 비롯한 객체, 함수 등등도 포함한다)의 메모리 공간 주소를 가리키는 변수를 뜻한다. C/C++ 언어의 강력한 기능이자 만악의 근원이며 프로그래머의 뒷목을 잡게 만드는 원흉이기도 하다.
겉보기에는 포인터를 사용하지 않는 것처럼 보이는 프로그래밍 언어도 알고 보면 포인터 개념을 사용하고 있는 모습을 볼 수 있다. 예를 들어, 파이썬의 경우,
x = [1, 2, 3]
y = x
print(id(x), id(y))
이 코드는 y에 [1, 2, 3] 리스트를 대입한 것이 아니다. 이 코드를 실행시켜 보면 '4413603008 4413603008'와 같은 결과가 나온다. 숫자는 그때 그때 달라지지만 두 숫자는 같은 값이 나온다. 즉 x, y 모두 같은 메모리 공간 주소를 가리킨다는 뜻이다. 즉 y에는 x의 메모리 공간 주소를 대입시킨 것이다. 따라서 y.append(4) 명령으로 리스트 y에 1을 추가시키면 x 역시 [1, 2, 3, 4]로 리스트의 내용이 바뀐다.