c - 포인터의 이해

- 포인터의 선언

*** 포인터 변수임을 알리는 '*'는 뒤에 따르는 포인터 변수가 가르키는
메모리 공간속의 실질적인 값이다.
*** '&'는 뒤에 따르는 변수의 주소값을 나타낸다.

데이터형 *변수이름;
  ex)  int *temp;

기본적인 사용 예)
 int *temp;    //  정수형의 temp 포인터 변수의 선언.
 int a = 10;    //  정수형의 변수 a에 10의 값을 대입.
 temp = &a;    // 'a'의 주소값을 temp에 대입.
 printf("%d", *temp)  // *temp의 값을 출력한다.

 -> 추리순서 1)  temp의 값에는 a의 물리적인 주소값이 입력된다.
                   2)  temp는 a의 물리적인 주소값을 가지고 있다.
                   3)  '*'는 실질적인 값을 나타낸다.
                   4)   temp는 a의 주소값을 가지는데, '*temp'라고 하면
                        temp의 주소값이 가지는 실질적인 값이 된다.
     
         결국, '*temp'는 'a'와 동일한 값을 가진다.

**주의할 점
 포인터 변수인 temp의 데이터 형은 실제로 포인터 변수가 가리키게 될 대상인
a의 데이터 형과 일치해야 한다!

**포인터의 기본개념
데이터가 있는 메모리 주소를 기억하고 있다가, 필요할 때 참조하겠다는 의미.

**포인터의 사용이유
대상의 메모리 주소를 참고하여, 물리적인 메모리에 직접 접근함으로 인해,
처리 속도를 향상시킬 수 있다.