배열 포인터란 배열의 주소를 가리키는 포인터. 배열 포인터는 함수의 인자가 메모리가 큰 배열일 경우 유용하게 사용될 수 있다. 배열 포인터는 다음과 같이 선언된다.
데이터 형 (*포인터명)[크기];
예를 들어서
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 |