배열 포인터란 배열의 주소를 가리키는 포인터. 배열 포인터는 함수의 인자가 메모리가 큰 배열일 경우 유용하게 사용될 수 있다. 배열 포인터는 다음과 같이 선언된다.
데이터 형 (*포인터명)[크기];
예를 들어서
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의 각 요소를 접근할 수 있도록 되어있음을 알 수 있다.
'c or linux' 카테고리의 다른 글
| 함수의 인수를 확인하기 위해 assertion을 사용한다 (0) | 2005.03.09 |
|---|---|
| 원형(prototype) 강화하기 (0) | 2005.03.09 |
| void 형 포인터와 널 포인터 (0) | 2005.03.09 |
| 포인터의 포인터 (0) | 2005.03.09 |
| 동적 메모리 - 메모리 할당 (0) | 2005.03.09 |


