본문 바로가기
dev, tech/c, c++

포인터 #4 (void 포인터)

by 구띵 2006. 4. 6.

void 포인터

 

- 포인터의 두 가지 요소 중, 둘째 요소인 가리키는 데이터형이 정해지지 않은 포인터를 의미한다.

  void포인터의 정의는 가리키는 데이터형이 없으므로 데이터형 자리에 void라는 예약어룰 기술한다.

 

 예) void *vptr;

 

- 특징 :

 

1. 역참조 연산자(* : 포인터가 가리키는 곳의 내용을 읽어냄)를 사용하지 못한다는 것이다.

            (참조하려면 가리키는 데이터형을 알아야 적절하게 해석을 한다.)

           하지만, 형변환 연산자 (casting operator)를 이용하여 다른 형의 포인터로 강제 형변환을 하면 참조가 가능하다.

 

 예) int i;

      i = *vptr; // 잘못된 표현 . vptr은 형이 정해지지 않았기 때문이다.

      i = *(int*)vptr; // vptr 을 (int *)연산을 이용하여 int형의 포인터로 변환

 

2. 가리키는 곳의 데이터형이 없으므로 포인터에 정수를 더하거나 빼지 못한다. 즉, + , - 연산을 할 수 없다.

    하지만, 이것도 참조와 마찬가지로 다른 형의 포인터로 강제 형변환하여서 +, - 연산을 행할 수 있다.

 

 예) i = *(vptr +1);   // 잘못됨

      i = *((int *)vptr+1); // 맞는 표현

 

- void 포인터의 특징을 이용하여, 데이터형에 관계 없이 동작하는 함수를 제작하는데 유용하게 사용할 수 있다.

 

 

'dev, tech > c, c++' 카테고리의 다른 글

함수에서 인자를 넘기는 방식  (0) 2006.04.06
포인터 #5 (함수포인터)  (0) 2006.04.06
포인터 #3 ( 포인터의 포인터 )  (0) 2006.04.06
포인터 #2 ( 구조체를 가리키는 포인터 )  (0) 2006.04.06
포인터 #1  (0) 2006.04.06

댓글