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

C 언어에서 포인터의 다른 유형은 무엇입니까?

<시간/>

포인터는 다른 변수의 주소를 저장하는 변수입니다.

포인터의 구문은 다음과 같습니다 -

pointer = &variable;

포인터 유형

다음과 같은 8가지 유형의 포인터가 있습니다. -

  • 널 포인터

  • 무효 포인터

  • 와일드 포인터

  • 댕글링 포인터

  • 복잡한 포인터

  • 가까운 포인터

  • 먼 포인터

  • 거대한 포인터

널 포인터

포인터 선언 시 null 값을 할당하여 null 포인터를 생성합니다.

이 방법은 포인터에 주소를 할당하지 않을 때 유용합니다. 널 포인터는 항상 값 0을 포함합니다.

예시

다음은 널 포인터에 대한 C 프로그램입니다 -

#include <stdio.h>
int main(){
   int *ptr = NULL; //null pointer
   printf("The value inside variable ptr is:\n%d",ptr);
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

The value inside variable ptr is:
0

보이드 포인터

연관된 데이터 유형이 없는 포인터입니다. void 포인터는 모든 유형의 주소를 보유할 수 있으며 모든 유형으로 유형 변환할 수 있습니다.

일반 포인터라고도 하며 표준 데이터 유형이 없습니다.

void 키워드를 사용하여 생성됩니다.

예시

다음은 void 포인터에 대한 C 프로그램입니다 -

#include <stdio.h>
int main(){
   void *p = NULL; //void pointer
   printf("The size of pointer is:%d\n",sizeof(p)); //size of p depends on compiler
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

The size of pointer is:8

와일드 포인터

와일드 포인터는 초기화되지 않은 포인터라고도 합니다. 임의의 메모리 위치를 가리키고 프로그램이 충돌하거나 제대로 작동하지 않을 수 있기 때문입니다.

이 유형의 C 포인터는 효율적이지 않습니다. 프로그램에 문제를 일으킬 수 있는 알 수 없는 메모리 위치를 가리킬 수 있기 때문입니다. 이로 인해 프로그램이 충돌할 수 있습니다.

와일드 포인터로 작업할 때는 주의하는 것이 좋습니다.

예시

다음은 와일드 포인터를 위한 C 프로그램입니다 -

#include <stdio.h>
int main(){
   int *p; //wild pointer
   printf("\n%d",*p);
   return 0;
}
Process returned -1073741819 (0xC0000005) execution time : 1.206 s
Press any key to continue
i.e. you won’t get output, some compilers show error message at output