void형 포인터
자료형을 지정하지 않은 포인터 변수이다.
자료형을 지정하지 않았다는 것은 곧, 어떤 자료형의 주소라도 저장할 수 있다는 의미이다.
void형 포인터는 참조(*) 연산자로 값을 접근하려면 강제 형변환이 필요하다.
형변환의 방법은 아래의 예시 코드와 같다.
char c = 3;
double d = 3.1;
void *vp = NULL;
vx = &c;
printf("vp가 저장한 값 : %x\n", vp);
printf("*vp의 값 : %d\n", *(char*)vp); // 강제 형변환
vp = &d;
printf("vp가 저장한 값 : %x\n", vp);
printf("*vp의 값 : %lf\n", *(double*)vp); // 강제 형변환
만약 void pointer에 저장된 값이 int형이라면,
위 사진과 같이 강제 형변환을 할 수 있고,
순서대로 절차가 이루어진다.
다른 자료형의 경우도 마찬가지이다.
void 포인터의 한계점
이 void 포인터가 일반 포인터들과 비교하여 갖는 단점은 크게
아무런 포인터 연산을 할 수 없다는 것이 있다.
자료형이 정해져 있지 않은 void 포인터는 포인터 연산이 불가능하다.
'C' 카테고리의 다른 글
[C] 포인터와 문자열 (0) | 2023.11.12 |
---|---|
[C] 포인터와 1차원 배열 (0) | 2023.10.26 |
[C] 포인터와 2차원 배열 (0) | 2023.10.26 |
[C] 배열 포인터, 포인터 배열 (0) | 2023.10.26 |
[C] 포인터와 함수 (0) | 2023.10.26 |