34.5 void 포인터 선언하기
, 조 은정님이 작성책 436쪽의 코드 "void_pointer.c"에 관한 질문입니다
1. ptr = numPtr1;
2. ptr = cPtr1;
3. numPtr1 = ptr;
4. cPtr1 = ptr;
1에서 void 포인터에 int 포인터를 저장하는 것까지는 이해가 됐습니다.
다만, 2에서 주석에는 void 포인터에 char 포인터에 char 포인터 저장이라고 나와있는데 1번 코드에서 int ptr에는 이미 int 포인터가 저장되었으니, int포인터에 char 포인터가 저장된 셈이니 오류가 나야하는 것 아닌가요?
밑에 3, 4번의 경우도 동일한 방식으로 오류가 나야할 것 같은데 어떤 부분을 잘못 생각하고 있는건지 잘 모르겠습니다.
예를 들어 void 포인터에 int형 포인터를 저장한다고 하면, 그냥 int 형 포인터가 저장되기만 한 여전히 void 형 포인터인 걸까요?
Re: 34.5 void 포인터 선언하기
, 도장_ 관리자님이 작성범용 포인터는 포인터 전용 가방과 같습니다.
void 포인터가 int 포인터로 변환된 것이 아닙니다.
포인터 전용 가방이므로 다양한 종류의 포인터를 담아서 전달할 수는 있지만, 가방의 역할만 수행하기 때문에 포인터 연산은 허용되지 않습니다. 계속 학습하면 포인터 연산이 허용되지 않는다는 설명도 학습하게 될 겁니다.
포인터는 모두 주솟값이므로 범용 포인터를 포인터 전용 가방으로 쓰는 게 가능합니다.