zyeon's 작심삼일 코딩 공부
void 포인터 본문
포인터를 선언할 때 구체적인 대상물이 정해져있지 않았다면 void 포인터를 사용할 수 있다.
void 포인터는 메모리의 주소만을 가지고있는 변수를 말하며, 제네릭 포인터 라고도 한다.
void 포인터는 가리키는 대상의 자료형이 정해져있지 않기 때문에 *연산자를 사용할 수 없지만, 명시적인 대상을 가리키는 포인터 타입으로 형변환을 하면 사용 가능하다.
마찬가지로 void 포인터는 주소값을 얼마나 더하고 빼야하는지 모르기 때문에 주소 연산을 수행할 수 없지만, 형변환을 하여 사용이 가능하다.
void *p = nullptr;
int a = 10;
p= &a;
//printf("*p = %d", *p); //오류, 역참조 불가
printf("*(int *)p = %d", *(int *)p); //가능
//p = p + 1; //오류, 주소 연산 불가
p = (int *)p + 1; //가능
void 포인터는 어떤 타입의 포인터도 받을 수 있기 때문에, 매개변수로 사용해 함수를 작성할 때도 유용하다.
'c++ 정리' 카테고리의 다른 글
동적할당 malloc() (0) | 2024.07.02 |
---|---|
문자 자료형 wchar_t (0) | 2024.06.28 |
const와 포인터 (0) | 2024.06.21 |
포인터와 배열 (0) | 2024.06.20 |
포인터 (0) | 2024.06.17 |