포인터에 대한 이중 포인터 또는 포인터는 다른 포인터의 주소를 보유하는 변수입니다.
다음은 포인터에 대한 포인터 선언입니다 -
datatype ** pointer_name;
예를 들어, int **p; p는 포인터에 대한 포인터입니다.
초기화 − '&'는 초기화에 사용됩니다.
예를 들어,
int a = 10; int *p; int **q; p = &a;
액세스 − 접근 시 간접 연산자(*)를 사용합니다.
예시
다음은 포인터에 대한 포인터에 대한 C 프로그램입니다 -
#include<stdio.h> main ( ){ int A = 10; int *p; int **q; p = &A; q = &p; printf("A =%d",A); printf("A value of pointer = %d", *p); printf("A value of double pointer = %d", **q); }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
A=10 A value of pointer = 10 A value of double pointer = 10
무효 포인터
모든 데이터 유형 변수의 주소를 보유할 수 있는(또는) 모든 데이터 유형 변수를 가리킬 수 있는 포인터 유형입니다.
다음은 void 포인터에 대한 선언입니다 -
void *pointername;
예를 들어, void *vp;
액세스 − 유형 캐스트 연산자는 포인터를 통해 변수 값에 액세스하기 위한 것입니다.
구문은 다음과 같습니다 -
* ( (type cast) void pointer)
예를 들어,
int i=10; void *vp; vp = &i; printf ("%d", * ((int*) vp)); type cast
예시
다음은 void 포인터에 대한 C 프로그램입니다 -
#include<stdio.h> main ( ){ int i =10; float f = 5.34; void *vp; clrscr ( ); vp = &i; printf ("i = %d", * ((int*)vp)); vp = &f; printf ( "f = %f", * ((float*) vp)); getch ( ); }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
i = 10 f = 5.34