-
char ch= 'A';int a = 25;double b = 3.14;char str[] ="korea";int ary[3][4]={1,2,3,4,5,6};void* vp;vp = &ch;printf("%c\n", *(char*)vp); //vp의 사용시점에 가리키는 값이 무엇인지 표기해줘야함vp = str;printf("%c\n", *((char*)vp+1));printf("%s\n", (char*)vp);vp = ary[0];printf("%d\n", *(int*)vp);vp = ary;printf("%d\n", **(int(*)[4])vp);// 2차원 배열이므로 **두개붙여야..printf("%d\n", **((int(*)[3])vp+1)+1);vp = &b;printf("%lf\n", *(double*)vp);vp = &a;printf("%d\n", *(int*)vp);
---결과값 ---------
A
o
korea
1
1
5
3.140000
25
------------------------------------
보이드 포인터는 어떤 자료형을 가리키는 주소값이어도 상관없이 다 받을 수 있지만, (차원에 상관없이 주소값이기만 하면 전부 ㅇㅋ)
그 값을 사용하려고 하는 시점에서는 정확하게 어떤 자료형을 가르키고 있는지 형변환이 필요하다.
예)
(char*)vp ==> vp가 char자료형을 가리키고 있다는 것을 알려주는 형변환
'C, C++' 카테고리의 다른 글
static과 전역변수, 지역변수 (0) 2018.12.27 헤더와 메소드 분리하기, 메소드 포인터 이용하기 (0) 2018.12.27 함수의 포인터 표현 + 포인터와 배열의 차이점 (0) 2018.12.20 포인터 연산과 배열 표현(심화 연습편) (0) 2018.12.19 String 함수의 사용, 선택정렬- 버블정렬 (0) 2018.12.18