Re: 65.6 질문
, 도장_ 관리자님이 작성void는 맥락에 따라 의미가 다릅니다.
타입에서 void는 타입이 없다는 뜻이므로 %f로 직접 쓸 수 없습니다.
포인터에서 void*는 일반 포인터(general pointer)이므로 타입이 자동으로 변환됩니다.
C 언어에서는
char *ptr = malloc(10);
이와 같이 사용합니다. malloc은 void*를 반환하지만, 자동으로 변환되어 char*에 메모리가 할당됩니다.
같은 문법이 C++ 언에서는 문법 위반입니다. 따라서 이를 피하기 위해
char *ptr = (char*)malloc(10);이와 같이 할당한 이후에 변환을 해줘야 합니다.
Visual C++에서 확장자가 .cpp인 상태이면 C++로 인식하기 때문에 C 언어 방식의 메모리 할당을 사용하면 에러가 발생합니다. 포럼에서도 자주 올라왔던 사항이죠. 확장자를 .c로 바꾸면 해결됩니다.
문의한 내용은 void*와 void의 차이점을 혼동한 것으로 보입니다.