포인터란 주소를 저장하기 위한 메모리 공간이다. 즉, 주소를 저장하는 변수를 포인터라 한다.

 

포인터 변수는 변수 이름 앞에 '*'를 붙여 선언한다. 예로 char * cp는 char형 주소를 저장하는 변수 cp를 의미하고, cp를 포인터 변수라 한다.

 

포인터 변수의 크기는 4byte이다.

 

 

다차원 포인터

 

다차원 포인터는 포인터 변수의 주소를 저장하는 포인터이다. 포인터 변수도 메모리에 할당되기 때문에 4byte 크기를 갖고 주소도 4개 사용한다. 이때 포인터 변수도 메모리에 할당되므로 메모리의 주소를 가지며 이와 같은 주소를 저장하기 위해서는 다차원 포인터를 사용한다.

 

2차원 char형의 주소를 저장하기 위해서는 '**' 연산자를 붙여 char형 2차원 포인터 변수를 만들어 사용한다.

 

3차원 포인터와 4차원 포인터 변수도 모두 같은 의미로 사용된다.

 

Windows에서 단일 프로세스는 총 4기가 바이트 크기의 가상 메모리를 가질 수 있고 주소는 00000000부터 FFFFFFFF까지 사용한다.

 

모든 자료형의 주소는 의미를 가지며 가 또 각 주소에 정수를 가 감산하면 주소가 가지는 데이터의 크기에 따라 주소의 결과가 달라진다.

char형 주소에 +1하면 char형 크기만큼 건너뛴 주소 1이 증가하고 int형 주소에 +1하면 int형 크기만큼 건너뛴 주소 4가 증가한다.

 

 

내용 정리

 

- 포인터는 주소를 저장하기 위한 메모리 공간이다.

- 포인터의 크기는 모두 4byte이다.

- 포인터 변수로 값에 접근할 때는 *연산자를 사용한다.

- 2차원 포인터 변수는 1차원 포인터 변수의 주소를 저장하기 위한 메모리 공간이다.

- n차원 포인터 변수는 n-1차원 포인터 변수의 주소를 저장하기 위한 메모리 공간이다.

- n차원 포인터 변수는 * 연산자를 n개 붙여 메모리 공간을 접근한다.

'프로그래밍 > C 포인터' 카테고리의 다른 글

3. 배열  (0) 2020.02.17
1. 변수와 메모리  (0) 2020.02.10