최근 바뀜
통계
임의의 문서로
도움말
문서
토론
원본 보기
역사 보기
로그인
포인터 문서 원본 보기
내위키
←
포인터
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
Pointer. 프로그래밍 언어에서 다른 변수(클래스를 비롯한 객체, 함수 등등도 포함한다)의 메모리 공간 주소를 가리키는 변수를 뜻한다.<ref>'Point'에는 '가리키다'라는 뜻이 있다. 즉 포인터는 point-er, '가리키는 것'이라는 뜻이 된다.</ref> [[C]]/[[C++]] 언어의 강력한 기능이자 만악의 근원이며 프로그래머의 뒷목을 잡게 만드는 원흉이기도 하다. 포인터는 주로 [[C]]에서 많이 쓰이는 기능이기 때문에 여기서는 [[C]]를 기준으로 설명한다. 포인터는 데이터의 주소값만을 가지고 있기 때문에 포인터의 크기는 주소값의 크기로 고정된다. 예를 들어 32비트 프로그래밍을 한다고 가정하면, 그 '32비트'가 포인터의 크기가 된다. 즉 char든 double이든 float든 뭐든 포인터의 크기는 32비트다. 또한 포인터는 데이터의 시작 부분 주소값만을 담고 있다. 100 바이트짜리 char* 문자열이라고 해도 포인터는 무조건 첫 바이트의 주소값만 가지고 있다. 따라서 포인터만 가지고는 그 데이터가 어디에서 끝나는지 알 수 없다. C는 문자열의 끝이 [[NULL]]로 끝나야 한다고 정하고 있다. 겉보기에는 포인터를 사용하지 않는 것처럼 보이는 프로그래밍 언어도 알고 보면 내부에는 포인터 개념을 사용하고 있는 모습을 볼 수 있다. 예를 들어 포인터와는 전혀 관련이 없을 것 같은 [[파이썬]]의 경우, <syntaxhighlight lang="python3"> x = [1, 2, 3] y = x print(id(x), id(y)) </syntaxhighlight> 이 코드는 y에 [1, 2, 3] 리스트를 대입한 것이 아니다. 이 코드를 실행시켜 보면 '4413603008 4413603008'와 같은 결과가 나온다. 숫자는 그때 그때 달라지지만 두 숫자는 같은 값이 나온다. 즉 x, y 모두 같은 메모리 공간 주소를 가리킨다는 뜻이다. 즉 y에는 x의 메모리 공간 주소를 대입시킨 것이다. 따라서 y.append(4) 명령으로 리스트 y에 1을 추가시키면 x 역시 [1, 2, 3, 4]로 리스트의 내용이 바뀐다. 단, 포인터 연산 같은 것은 막혀 있다. [[Category:프로그래밍 언어]]
이 문서에서 사용한 틀:
틀:각주
(
원본 보기
)
포인터
문서로 돌아갑니다.
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보