この記事では、ポインタを使って配列を操作する方法と、ポインタと配列の注意点について説明します。
配列の要素へのアクセスや変更、要素の追加や削除など、ポインタを使った配列の操作方法を学ぶことができます。
また、ポインタの範囲外アクセスやNULLチェック、メモリの解放など、ポインタと配列の注意点も理解することができます。
初心者の方にもわかりやすく解説していますので、ぜひ参考にしてください。
目次から探す
ポインタを使った配列の操作方法
配列は、複数のデータをまとめて扱うためのデータ構造です。
ポインタを使って配列を操作することで、より柔軟なプログラミングが可能になります。
以下では、ポインタを使った配列の操作方法について説明します。
配列の要素へのアクセス
配列の要素へのアクセスには、インデックスを使います。
インデックスは、配列の先頭要素からのオフセットを表します。
ポインタを使って配列の要素にアクセスする場合、以下のような方法があります。
int array[5] = {1, 2, 3, 4, 5};
int *ptr = array; // ポインタに配列の先頭アドレスを代入
// インデックスを使って要素にアクセス
printf("%d\n", array[0]); // 出力: 1
// ポインタを使って要素にアクセス
printf("%d\n", *ptr); // 出力: 1
配列の要素の変更
配列の要素を変更するには、ポインタを使って要素のアドレスにアクセスし、値を代入します。
以下の例では、配列の2番目の要素を変更しています。
int array[5] = {1, 2, 3, 4, 5};
int *ptr = array; // ポインタに配列の先頭アドレスを代入
// インデックスを使って要素を変更
array[1] = 10;
printf("%d\n", array[1]); // 出力: 10
// ポインタを使って要素を変更
*(ptr + 1) = 20;
printf("%d\n", *(ptr + 1)); // 出力: 20
配列の要素の追加と削除
配列の要素を追加するには、新しい配列を作成し、元の配列の要素をコピーする必要があります。
同様に、要素を削除するには、削除したい要素以降の要素を前に詰める必要があります。
以下の例では、要素の追加と削除の方法を示しています。
int array[5] = {1, 2, 3, 4, 5};
int *ptr = array; // ポインタに配列の先頭アドレスを代入
// 要素の追加
int newArray[6];
for (int i = 0; i < 5; i++) {
newArray[i] = array[i];
}
newArray[5] = 6;
// 要素の削除
for (int i = 2; i < 5; i++) {
array[i] = array[i + 1];
}
// 結果の出力
for (int i = 0; i < 6; i++) {
printf("%d ", newArray[i]);
}
printf("\n"); // 出力: 1 2 3 4 5 6
for (int i = 0; i < 4; i++) {
printf("%d ", array[i]);
}
printf("\n"); // 出力: 1 2 4 5
以上が、ポインタを使った配列の操作方法の基本です。
ポインタを使うことで、配列の要素へのアクセスや変更が容易になります。
是非、実際にコードを書いて試してみてください。
次のページ配列にポインタでアクセスする際の注意点