2015. 10. 23. 07:37
void* 프로그래밍/자료구조설계2015. 10. 23. 07:37
void*
void포인터는 어떤 타입의 포인터든 다 받을 수 있는 포인터이다.
받는 것은 어떤 포인트형이든 다 받을 수 있다.
그런데 그 포인터에 접근할 때는 해당 포인트의 자료형에 맞에 접근해야 한다.
한마디로, 주소값이 void*에 들어갈때는 자유로우나 나올때는 알맞게 접근해야한다.
다음 예제를 보면 알기쉽다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main(){ void* ptr; int i = 7; float f = 23.5; ptr = &i; printf("%d\n", *((int*)ptr)); ptr = &f; printf("%f\n", *((float*)ptr)); return 0; } | cs |
10줄과 13줄에 포인터가 int*와 float*f 로 형변환 시켜서 포인터에 접근한 것을 확인할 수 있다.
형변환 해주지 않으면 에러가 나서 컴파일이 안된다.
'프로그래밍 > 자료구조설계' 카테고리의 다른 글
인터넷 check sum 함수의 구현 (0) | 2016.02.08 |
---|---|
다운 (0) | 2016.02.07 |
열거형 enum (1) | 2015.10.23 |
윈도우에서 리눅스처럼 컴파일하기 (1) | 2015.09.19 |