C++ Chapter 6.17 : void 포인터 (제네릭 포인터)
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
void 포인터
- 다양한 데이터 타입을 가리킬 수 있다.
- 이런 점에서 generic pointer 라고도 한다.
int main() { int i = 5; float f = 3.0; char c = 'a'; void *ptr = nullptr; ptr = &i; // int도 가리킬 수 있고 ptr = &f; // float도 가리킬 수 있고 ptr = &c; // char도 가리킬 수 있다. return 0; }
- 이런 점에서 generic pointer 라고도 한다.
void 포인터의 한계점
1. 포인터 연산이 불가능하다.
ptr + n
포인터 연산이 불가능.
- 데이터 타입마다 쓰는 메모리 크기가 다른데 그것을 알지 못하는
void *
이기 때문에 연산이 불가능.- 실제로 주소값에 K * n 을 더해주어야 하는데 int 같은 경우는 K = 4 이고 하지만.. void 의 경우 그 K를 알 수가 없기 때문
2. 간접 참조가 불가능하다.
*ptr = 땡땡
불가능.
- 강제로 형 변환해야만 간접 참조가 가능하다.
cout << *static_cast<char*>(ptr) << endl; // char * 로 형변환 한 후 앞에 *를 붙여 간접 참조한다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기