포인터(pointer)
29 Sep 2017 | algorithm
이번 글에서는 포인터(pointer) 개념에 대해 살펴보도록 하겠습니다. 이 글은 고려대 김황남 교수님 강의를 정리하였음을 먼저 밝힙니다. 그럼 시작하겠습니다.
개념
포인터란 다른 변수의 메모리 공간주소를 가리키는 변수를 가리킵니다. 포인터는 C, C++ 등과 같은 언어에서는 프로그래머가 직접 제어할 수 있고, 파이썬 등과 같은 언어에서는 완전히 숨겨져 사용할 수 없습니다. 하지만 프로그래머가 사용할 수 없다고 해서 해당 언어에서 포인터가 전혀 쓰이지 않는 건 아니어서 그 개념을 알고 있을 필요가 있습니다.
예시
포인터를 명시적으로 다룰 수 있는 C언어에서 다음과 같은 코드가 있다고 칩시다.
int i, *pi, **ppi;
i = 5;
pi = &i;
ppi = π
위 코드를 그림으로 나타내면 다음과 같습니다.
$i$, $pi$, $ppi$가 가리키는 메모리 주소와 그 실제값은 다음과 같습니다.
Variable
Address
Value
$i$
100
5
$pi$
104
100
$ppi$
108
104
각 notation의 의미와 그 notation이 가리키는 값은 다음과 같습니다.
Usage
Meaning
Value
$pi$
$i$의 주소
100
$*pi$
$i$의 실제값
5
$\&pi$
$pi$의 주소
104
$ppi$
$pi$의 주소
104
$*ppi$
$pi$의 실제값=$i$의 주소
100
$**ppi$
$i$의 실제값
5
이번 글에서는 포인터(pointer) 개념에 대해 살펴보도록 하겠습니다. 이 글은 고려대 김황남 교수님 강의를 정리하였음을 먼저 밝힙니다. 그럼 시작하겠습니다.
개념
포인터란 다른 변수의 메모리 공간주소를 가리키는 변수를 가리킵니다. 포인터는 C, C++ 등과 같은 언어에서는 프로그래머가 직접 제어할 수 있고, 파이썬 등과 같은 언어에서는 완전히 숨겨져 사용할 수 없습니다. 하지만 프로그래머가 사용할 수 없다고 해서 해당 언어에서 포인터가 전혀 쓰이지 않는 건 아니어서 그 개념을 알고 있을 필요가 있습니다.
예시
포인터를 명시적으로 다룰 수 있는 C언어에서 다음과 같은 코드가 있다고 칩시다.
int i, *pi, **ppi;
i = 5;
pi = &i;
ppi = π
위 코드를 그림으로 나타내면 다음과 같습니다.
$i$, $pi$, $ppi$가 가리키는 메모리 주소와 그 실제값은 다음과 같습니다.
Variable | Address | Value |
---|---|---|
$i$ | 100 | 5 |
$pi$ | 104 | 100 |
$ppi$ | 108 | 104 |
각 notation의 의미와 그 notation이 가리키는 값은 다음과 같습니다.
Usage | Meaning | Value |
---|---|---|
$pi$ | $i$의 주소 | 100 |
$*pi$ | $i$의 실제값 | 5 |
$\&pi$ | $pi$의 주소 | 104 |
$ppi$ | $pi$의 주소 | 104 |
$*ppi$ | $pi$의 실제값=$i$의 주소 | 100 |
$**ppi$ | $i$의 실제값 | 5 |
Comments