Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어에서 포인터에 대한 포인터와 무효 포인터의 개념을 설명합니까?

<시간/>

포인터에 대한 이중 포인터 또는 포인터는 다른 포인터의 주소를 보유하는 변수입니다.

다음은 포인터에 대한 포인터 선언입니다 -

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