ダブルポインターを使用することで、複雑なデータ構造や関数の引数の値を変更することができます。以下に、ダブルポインターの使用例とコード例をいくつか紹介します。
-
ポインターのスワップ: ダブルポインターを使用して、2つのポインターの値を交換することができます。以下は、ポインターをスワップするための関数の例です。
void swapPointers(int ptr1, int ptr2) { int* temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; }
-
動的メモリの解放: ダブルポインターは、動的に割り当てられたメモリを解放する際にも便利です。以下は、ダブルポインターを使用して動的に割り当てられたメモリを解放するコードの例です。
void freeMemory(int ptr) { free(*ptr); *ptr = NULL; }
-
配列のソート: ダブルポインターを使用して、配列の要素をソートすることもできます。以下は、整数配列を昇順にソートする関数の例です。
void sortArray(int ptr, int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (*ptr[j] > *ptr[j + 1]) { int* temp = *ptr[j]; *ptr[j] = *ptr[j + 1]; *ptr[j + 1] = temp; } } } }
これらはいくつかのダブルポインターの使用例ですが、実際にはさまざまな場面で活用することができます。ダブルポインターは、ポインターのポインターとして柔軟性とパワーを提供するため、プログラミングにおいて重要な概念です。