C++ のボイド ポインター
この記事では、C++ での void*
ポインターの使用について説明します。 その実装を示すためのサンプル コードも提供されています。
void*
ポインターを C++ で実装する
ポインター宣言で指定されているように、ポインターは、それが指しているのと同じデータ型でなければならないことを調査しました。 float ポインターを宣言する場合、int、long、string などの他のデータ型を指すことはできません。 float 型の変数のみを指すことができます。
C/C++ は、この問題を解決するソリューションを開発しました - void*
ポインタです。 void*
ポインターは、static
ポインター定義なしで任意のデータ型を指すことができる汎用ポインターです。
void*
ポインターには、任意のデータ型のアドレスを割り当てることができます。 同様に、void*
ポインターは、明示的に型キャストしなくても、任意のデータ型のポインターに割り当てることができます。
構文:
void *pointerName;
void *ptr;
C++ で void*
ポインターを使用することには、主に 2つの欠点があります。
- 具体的なサイズのため、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