C 언어 | 포인트 | 포인트 배열


각 요소가 포인터 형인 포인터의 배열을 만든다. 포인터의 배열을 이용하여 대용량 데이터를 구조적으로 관리할 수 있다.

포인터의 배열을 만들기

포인터는 메모리 주소를 저장하는 변수의 일종이므로, 정수형 등의 일반적인 변수와 마찬가지로 포인터의 배열을 만들 수 있다. 배열의 각 요소가 포인터라는 점을 제외하면, 일반 배열처럼 처리할 수 있다. 1차원에서도 다차원에서도 기본적으로 지금까지의 배열과 동일하다.

포인터의 배열은 다음과 같이 선언할 수 있다.

포인터 배열의 선언

형식 *포인터변수명[];

이렇게 하면, 여러 포인터를 배열로 통일된 관리를 할 수 있다. 첨자를 지정하여 저장되어 있는 주소를 꺼내거나 요소에 저장되어 있는 주소의 내용에 액세스할 수 있다. 단순히 포인터 변수를 배열화한 것이고, 그 취급은 배열과 포인터를 이해하고 있으면 어려운 것이 아니다.

예를 들어, 여러 문자열을 배열처럼 관리할 필요가 있는 경우, 다차원 배열을 이용하는 것보다도 문자열에 대한 포인터를 배열로 관리하는 형태가 자연스럽다.

코드1

#include <stdio.h>

int main() {
 char *chStr[] = {
   "Blue Blue Glass Moon" ,
    "Under The Crimson Air"
 };

  printf("%s\n%s\n" , *chStr , *(chStr + 1));
 return 0;
}

코드1의 배열 chStr는 문자열에 대한 포인터를 저장하는 2가지 요소로 구성되어 있다. 이 배열의 요소는 문자열을 포함하고 있는 것이 아니라, 문자열에 대한 포인터를 저장하고 있을 뿐이다. 2차원 배열에 의한 문자열 테이블에 비해 유연하게 처리할 수 포인터가 참조하는 주소를 바꾸는 것만으로 테이블을 갱신할 수 있다.