C++의 무효 포인터
이 기사에서는 C++에서 void*
포인터의 사용에 대해 설명합니다. 구현을 보여주기 위해 예제 코드도 제공됩니다.
C++에서 void*
포인터 구현
우리는 포인터 선언에 지정된 대로 포인터가 가리키는 것과 동일한 데이터 유형이어야 한다는 것을 연구했습니다. float 포인터를 선언하면 int, long 또는 string과 같은 다른 데이터 유형을 가리킬 수 없습니다. float 유형 변수만 가리킬 수 있습니다.
C/C++는 이 문제를 극복하기 위한 솔루션인 void*
포인터를 개발했습니다. void*
포인터는 정적
포인터 정의 없이 모든 데이터 유형을 가리킬 수 있는 범용 포인터입니다.
모든 데이터 유형의 주소를 void*
포인터에 할당할 수 있습니다. 유사하게 void*
포인터는 포인터를 명시적으로 형 변환하지 않고 모든 데이터 유형의 포인터에 할당될 수 있습니다.
통사론:
void *pointerName;
void *ptr;
C++에서 void*
포인터를 사용하면 두 가지 주요 단점이 있습니다.
- 구체적인 크기로 인해 C++에서
void*
포인터로 포인터 산술을 수행할 수 없습니다. void*
포인터는 역참조할 수 없습니다.
C++에서 void*
포인터의 크기
void*
포인터의 크기는 C++의 문자 유형 포인터 크기와 유사합니다. 포인터는 프로그램의 일부 데이터를 가리키는 메모리 주소를 저장합니다.
C++의 이 포인터는 컴퓨터 플랫폼에 따라 다릅니다. 32비트 플랫폼에서 메모리 주소 데이터를 저장하려면 4바이트 또는 32비트가 필요합니다.
sizeof()
함수는 포인터의 크기를 식별할 수 있습니다.
통사론:
void *ptr = NULL; // void pointer
sizeof(ptr);
예제 코드:
#include
#include
using namespace std;
int main() {
void *ptr = NULL; // void pointer
int *p = NULL; // integer pointer
char *cp = NULL; // character pointer
float *fp = NULL; // float pointer
// size of pointers
cout
C++ 프로그램에서 void*
포인터를 사용하는 이유
우리는 C++에서 void*
포인터를 사용하여 프로그램에서 서로 다른 데이터 유형에 별도의 값을 할당하는 문제를 극복합니다. C++의 void*
포인터는 모든 데이터 유형을 가리킬 수 있으며 명시적으로 유형 변환하지 않고 해당 데이터 유형을 유형 변환할 수 있습니다.
반환 값이 없습니다. void*
포인터는 int, float 또는 char를 가리킬 수 있으며 해당 특정 데이터 유형에 대한 유형 변환을 수행할 수 있습니다.
개발자가 코드를 작성하고 프로그램의 복잡성을 줄이는 데 도움이 됩니다.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn