C++ のボイド ポインター

Zeeshan Afridi 2023年10月12日
  1. void* ポインターを C++ で実装する
  2. C++ での void* ポインターのサイズ
C++ のボイド ポインター

この記事では、C++ での void* ポインターの使用について説明します。 その実装を示すためのサンプル コードも提供されています。

void* ポインターを C++ で実装する

ポインター宣言で指定されているように、ポインターは、それが指しているのと同じデータ型でなければならないことを調査しました。 float ポインターを宣言する場合、int、long、string などの他のデータ型を指すことはできません。 float 型の変数のみを指すことができます。

C/C++ は、この問題を解決するソリューションを開発しました - void* ポインタです。 void* ポインターは、static ポインター定義なしで任意のデータ型を指すことができる汎用ポインターです。

void* ポインターには、任意のデータ型のアドレスを割り当てることができます。 同様に、void* ポインターは、明示的に型キャストしなくても、任意のデータ型のポインターに割り当てることができます。

構文:

void *pointerName;
void *ptr;

C++ で void* ポインターを使用することには、主に 2つの欠点があります。

  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
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