포인터는 다른 변수의 주소를 저장하는 변수입니다.
포인터의 구문은 다음과 같습니다 -
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