1. 일딴 알아야 하는거 설명(기초적인거)

메모리 공간 안에 어떤 변수를 선언하게 되면,

이 변수가 저장되는 메모리에 대한 물리적인 주소가 16진수로 할당이 됩니다.

그런데 우리가 주소들을 일일이 16진수로 되어있는 값을 기억하기 어렵기때문에

프로그램에서 메모리 공간에 접근하기 위해서 변수에다가 이름을 부여해서 "변수 메모리"에다가 접근을 하게 됩니다.

 

 

2. 포인터 변수 란?

C언어에서는 이러한 "메모리주소"들을 제어할 수 있는 기능들을 제공하고 있는데요,

특히 C언어에서 이런 변수의 주소를 저장 할 때에 사용하는 변수를

“포인터 변수"라고 합니다.

 

 

3. 간단하게 돌아가는 구조

(순서대로 - 첫번째)
a

b라는 변수메모리에 주소가 있을 건데,
주소를 저장하기 위해서
포인터형 변수를 선언을 합니다

(두번째)
포인터형 변수"를 선언 할 때는, 앞에 * 붙입니다.
그러면 *a 이거에는 일반적인 값을 저장하는게 아니라,
어떤 변수의 메모리 주소를 저장할 수 있는 "포인터 변수"를 선언한다고 생각하시면 됩니다.

(셋번째)
그리고 a라는 포인터 변수에다가  b메모리의 주소를 뽑아내서(&b=b의 주소임!! 값 아님) a포인터변수에다가 넣어줍니다.

(참고) - *a 그냥 임시로 주소 1000임....

(넷번째)
그리고 *a 이렇게 *를 이용해서 a에 접근을 하게 되면 a가 가지고 있는 1000이라는 메모리주소에 찾아가서 그안에 있는 값을 c라는 변수에다가 지정해 줍니다.