예전/C, C++

[C/C++] void*

showmiso 2012. 10. 16. 10:25



간단한 void*


(추후 보강 예정)




void 란, '~이 하나도 없는' 이라는 뜻으로 void*는 자료형이 없는 포인터 변수라는 뜻입니다.

즉, 자료형에 제약을 받지 않고, 어떤 자료형의 주소라도 저장할 수 있는 포인터 변수입니다.



(코드)







위의 코드를 실행하면 이와 같은 에러가 발생합니다.


즉, void* 형 변수는 주소만 저장할 수 있는 변수로, 값에 간접 접근하거나 변경할 수는 없습니다.





이 코드를 변경해 값을 출력해 보도록 하겠습니다.

값을 출력 하려면 어떻게 변경해야 할까요?




(코드)



(결과)





void* 를 강제 형변환해야 합니다. 

강제 형변환을 통해 주소에 저장된 값을 참조 했습니다. 결과는 위와 같이 a와 3.141592 가 출력되었습니다.





이번엔 값을 변경해 보도록 하겠습니다.


(코드)




(결과)




이 역시 강제 형변환을 통해 변수에 저장된 값을 바꿔주었습니다.




void*를 이용할 때 가장 중요한 것은 강제 형변환입니다. 이를 통해 값을 참조할 수도, 변경할 수 도 있습니다.