포인터는 다른 변수의 주소를 저장하는 변수입니다.
기능
-
포인터는 메모리 공간을 절약합니다.
-
메모리 위치에 직접 접근하기 때문에 포인터의 실행 시간이 더 빠릅니다.
-
포인터의 도움으로 메모리에 효율적으로 액세스합니다. 즉, 메모리가 동적으로 할당 및 해제됩니다.
-
포인터는 데이터 구조와 함께 사용됩니다.
포인터 및 2차원 배열
2차원 배열에 대한 메모리 할당은 다음과 같습니다 -
int a[3] [3] = {1,2,3,4,5,6,7,8,9};
a[1] [2] = *(1234 + 1*3+2) = *(1234 + 3+2) = *(1234 + 5*4) // 4 is Scale factor = * (1234+20) = *(1254) a[1] [2] = 6
예시
다음은 포인터와 2차원 배열을 위한 C 프로그램입니다 -
#include<stdio.h> main ( ){ int a[3] [3], i,j; int *p; clrscr ( ); printf ("Enter elements of 2D array"); for (i=0; i<3; i++){ for (j=0; j<3; j++){ scanf ("%d", &a[i] [j]); } } p = &a[0] [0]; printf ("elements of 2d array are"); for (i=0; i<3; i++){ for (j=0; j<3; j++){ printf ("%d \t", *(p+i*3+j)); } printf ("\n"); } getch ( ); }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
enter elements of 2D array 1 2 3 4 5 6 7 8 9 Elements of 2D array are 1 2 3 4 5 6 7 8 9