ysw's blog

    Pointer

    02 Jan 2019 |

    이 글은 'ratsgo's blog'에서 가져왔으며 추가적인 설명을 넣어 개념을 적립하려한다.

    포인터란 다른 변수의 메모리 공간주소를 가리키는 변수를 가리킵니다. 포인터는 C, C++등과 같은 언어에서는 프로그래머가 직접 제어할 수 있고, 파이썬 등과 같은 언어에서는 완전히 숨겨져 사용할 수 없습니다. 하지만 프로그래머가 사용할 수 없다고해서 해당 언어에서 포인터가 전혀 쓰이지 않는 건 아니어서 그 개념을 알고 있을 필요가 있습니다.

    예시

    포인터를 명시적으로 다룰 수 있는 C언어에서 아래와 같은 코드로 예시를 듭니다.



    
    int i, *pi, **ppi;
    i = 5;
    pi = &i;
    ppi = &'pi';
    



    위 코드를 그림으로 나타내면 다음과 같습니다.


    <내용>

    $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


    <내용>

    추가적인 예시로 위와 같은 그림을 제시한다. 지역변수 num은 스택영역에 할당되고, 포인터 변수 p는 힙 영역에 할당되었습니다. 지역 변수 num의 주소 값은 출력할 때마다 매번 다른 값을 출력하게됩니다. 컴퓨터의 메모리 RAM(Random Access Meomory)가 접근이 임의기 때문입니다,

    URL: https://ratsgo.github.io/data%20structure&algorithm/2017/09/29/pointer/
    https://yeolco.tistory.com/96