본문 바로가기

예전/C, C++

[C/C++] void*



간단한 void*


(추후 보강 예정)




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

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



(코드)







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


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





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

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




(코드)



(결과)





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

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





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


(코드)




(결과)




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




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




'예전 > C, C++' 카테고리의 다른 글

[C/C++] 레퍼런스  (0) 2012.10.19
[C/C++] const 키워드  (4) 2012.10.17
[C/C++] 변수 (지역, 전역, static, extern)  (0) 2012.10.16
[C/C++] malloc/free 와 new/delete  (0) 2012.10.15
[C/C++] 다형성  (0) 2012.10.15