C++의 무효 포인터

Zeeshan Afridi 2023년10월12일
  1. C++에서 void* 포인터 구현
  2. C++에서 void* 포인터의 크기
C++의 무효 포인터

이 기사에서는 C++에서 void* 포인터의 사용에 대해 설명합니다. 구현을 보여주기 위해 예제 코드도 제공됩니다.

C++에서 void* 포인터 구현

우리는 포인터 선언에 지정된 대로 포인터가 가리키는 것과 동일한 데이터 유형이어야 한다는 것을 연구했습니다. float 포인터를 선언하면 int, long 또는 string과 같은 다른 데이터 유형을 가리킬 수 없습니다. float 유형 변수만 가리킬 수 있습니다.

C/C++는 이 문제를 극복하기 위한 솔루션인 void* 포인터를 개발했습니다. void* 포인터는 정적 포인터 정의 없이 모든 데이터 유형을 가리킬 수 있는 범용 포인터입니다.

모든 데이터 유형의 주소를 void* 포인터에 할당할 수 있습니다. 유사하게 void* 포인터는 포인터를 명시적으로 형 변환하지 않고 모든 데이터 유형의 포인터에 할당될 수 있습니다.

통사론:

void *pointerName;
void *ptr;

C++에서 void* 포인터를 사용하면 두 가지 주요 단점이 있습니다.

  1. 구체적인 크기로 인해 C++에서 void* 포인터로 포인터 산술을 수행할 수 없습니다.
  2. 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 Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - C++ Pointer