배열 포인터

c or linux 2005. 3. 9. 01:34

배열 포인터란 배열의 주소를 가리키는 포인터. 배열 포인터는 함수의 인자가 메모리가 큰 배열일 경우 유용하게 사용될 수 있다. 배열 포인터는 다음과 같이 선언된다.

데이터 형 (*포인터명)[크기];

 

예를 들어서

int (*array_pointer)[2];

위의 예제가 의미하는 것은 크기가 2인 배열을 가리키는 포인터이다. 포인터의 연산에서 증가 연산을 하면 int형의 2배 크기(4byte)만큼 주소 값이 증가한다.

 

예제

 1  #include <stdio.h>
 2
 3  int main()
 4  {
 5      int i, j;
 6      int array[3][2] = {5,10,6,12,7,14};
 7      int (*pointer_array)[2];
 8
 9      for(j=0;j<3;j++)
10          for(i=0;i<2;i++)
11              printf("array[%d][%d]=%d\n",j,i,array[j][i]);
12
13      pointer_array=array;
14
15      for(j=0;j<3;j++){
16          for(i=0;i<2;i++)
17              printf("pointer_array[%d]=%d\n",i,(*pointer_array)[i]+1);
18          pointer_array++;
19      }
20
21      return 0;
22  }
23

결과

 


 
배열 포인터를 사용하는 방법은 여러 가지이지만 위의 예에서는 배열의 주소를 배열 포인터에 대입하였다. 배열은 3X2의 2차원 행렬이나 배열 포인터는 크기 2의 1차원 배열 형태이다. 포인터 연산자를 이용하여 배열 포인터를 증가함으로써 3*2의 각 요소를 접근할 수 있도록 되어있음을 알 수 있다.
Posted by '김용환'
,