포인터 배열
다른 데이터 유형과 마찬가지로 포인터 배열도 선언할 수 있습니다.
선언
datatype *pointername [size];
예를 들어, int *p[5]; // 5개의 정수 요소 주소를 저장할 수 있는 포인터 배열을 나타냅니다.
초기화
'&'는 초기화에 사용됩니다.
예를 들어,
int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i;
액세스
접근시 간접연산자(*)를 사용합니다.
예를 들어,
for (i=0, i<3; i++) printf ("%d" *p[i]);
예시
#include<stdio.h> main (){ int a[3] = {10,20,30}; int *p[3],i; for (i=0; i<3; i++) p[i] = &a[i]; //initializing base address of array printf (elements of the array are”) for (i=0; i<3; i++) printf ("%d \t", *p[i]); //printing array of pointers getch(); }
출력
elements at the array are : 10 20 30
포인터에 대한 포인터
포인터에 대한 포인터는 다른 포인터의 주소를 담는 변수입니다.
선언
datatype ** pointer_name;
예를 들어, int **p; //p는 포인터에 대한 포인터입니다.
초기화
'&'는 초기화에 사용됩니다.
예 -
int a = 10; int *p; int **q; p = &a;
액세스
접근시 간접연산자(*)를 사용합니다.
예시
#include<stdio.h> main (){ int a = 10; int *p; int **q; p = &a; q = &p; printf("a =%d",a); printf("a value through pointer = %d", *p); printf("a value through pointer to pointer = %d", **q); }
출력
a=10 a value through pointer = 10 a value through pointer to pointer = 10