자료구조에 대해서는 추후에 공부하여 정리해서 올릴 예정입니다.
포인터??
포인터란 말 그대로 누군가를 가르킨다는 말이다.
C 언어에서는 메모리 주소를 값으로 가지는 변수 . 라고 표현한다.
Memory
Pointer
메모리 주소를 값으로 가지는 변수
여기서 포인터 변수는 다음과 같이 선언 한다.
type-name * variable-name;
// variable-name >> 포인터 변수의 Name
// type-name >> 포인터 변수에 저장될 주소에 저장할 데이터의 Type
int * ptr;
//위와 같이 선언한다
연산자 '&' 은 변수로부터 그 변수의 주소를 추출하는 연산자 입니다.
int c = 12; -- > 1008 번지
int *p; --- > 1028 번지
p = &c; --- > 1008 번지
// 간단한 변수 선언으로 설명 해드리겠습니다.
정수 12 를 C라는 변수에 담고, p라는 포인터변수를 정수로 담습니다.
그다음 포인터 p 에 c의 주소값을 대입합니다.
그렇다면 포인터 변수 p 에는 12가 저장되어있는 C의 주소값이 저장이 됩니다.
연산자 '&' 을 한번에 이해해 봅시다.
int x=1,y=2; //--> x = 1028번지 / y = 1024번지
int * ip; //--> ip = 1008 번지
ip = &x; //--> ip = 1008번지에 1028값 저장
y= *ip; //--> y = 1
*ip = 0; // --> x = 0
X와 Y를 정수형으로 각각 1, 2를 선언해준다.
ip라는 포인터변수를 정수로 선언한다.
포인터 변수 ip 에 X의 주소값을 저장한다.
y에 포인터변수 ip에 저장되어있는 X의 주소값에 저장된 값을 가져온다.
(즉 X의 값을 가져온다)
포인터 변수 ip에 저장되어있는 주소값에 위치한 곳의 값을 0으로 저장한다.
(즉 X의 값을 0으로 변경한다)
위의 상황들을 이해한다면 포인터에 대한 기본 개념은 이해했다고 생각하시면 됩니다^ㅡ^