-
ダブルポインターの宣言と初期化 ダブルポインターを宣言するには、2つのアスタリスク()を使用します。以下は、例です:
int main() { int value = 5; int* pointer = &value; int doublePointer = &pointer; // ダブルポインターの値を表示 std::cout << "ダブルポインターの値: " << *doublePointer << std::endl; return 0; }
この例では、
doublePointer
はpointer
のアドレスを格納しています。*doublePointer
を使用すると、pointer
の値(value
のアドレス)にアクセスできます。 -
ダブルポインターを使用した関数の引数としてのポインターの渡し方 ダブルポインターは、関数の引数としてポインターを渡す際に便利です。関数内でポインターの値を変更するために使用できます。以下は、例です:
void changeValue(int pointer) { int newValue = 10; *pointer = &newValue; } int main() { int value = 5; int* pointer = &value; // ポインターの値を変更する関数を呼び出し changeValue(&pointer); // 新しい値を表示 std::cout << "変更後の値: " << *pointer << std::endl; return 0; }
この例では、
changeValue
関数はポインターのポインターを引数として受け取り、ポインターの値を新しいアドレスに変更します。 -
ダブルポインターを使用した動的メモリの解放 ダブルポインターは、動的に割り当てられたメモリの解放にも使用できます。以下は、例です:
void deallocateMemory(int doublePointer) { delete *doublePointer; *doublePointer = nullptr; } int main() { int* pointer = new int; *pointer = 5; int doublePointer = &pointer; // メモリの解放 deallocateMemory(&doublePointer); return 0; }
この例では、
deallocateMemory
関数はポインターのポインターを引数として受け取り、メモリを解放します。解放後、ポインターとダブルポインターはnullptr
に設定されます。
これらはC++におけるダブルポインターの基本的な使用方法と例です。ダブルポインターはポインターをさらに柔軟に操作するための強力なツールですが、誤った使用はメモリ関連の問題を引き起こす可能性があるため、注意が必要です。