要素へのアクセス
CoddyのCジャーニー「Fundamentals」セクションの一部 — レッスン 54/63。
配列は、同じ型の複数の値を格納します。配列内の個々の要素にアクセスするには、インデックス番号を使用します。
C言語では、配列のインデックスは0から始まります。これは、最初の要素がインデックス0にあり、2番目の要素がインデックス1にある、といった具合であることを意味します。
5つの要素を持つ整数型の配列を作成します:
int numbers[5] = {10, 20, 30, 40, 50};最初の要素(インデックス 0)にアクセスします:
int firstElement = numbers[0];上記のコードを実行した後、firstElement には以下が含まれます:
103番目の要素(インデックス2)にアクセスします:
int thirdElement = numbers[2];これにより、値30がthirdElementに格納されます。
配列の境界外の要素(例にある numbers[5] のような)にアクセスしようとすると、未定義の動作を引き起こし、プログラムがクラッシュする原因となる可能性があります。
チャレンジ
簡単getElement という名前の関数を作成してください。この関数は以下の処理を行います:
- 整数配列とそのサイズをパラメータとして受け取ります
- インデックスのパラメータを受け取ります
- インデックスが有効な場合(配列の範囲内)、そのインデックスにある要素を出力します
- インデックスが無効な場合(配列の範囲外)、"Index out of bounds" と出力します
配列のインデックスは 0 から始まることを忘れないでください。例えば、6番目の要素が必要な場合は array[5] にアクセスする必要があります。
チートシート
配列は同じ型の複数の値を格納します。配列のインデックスは0から始まります。
整数型の配列を作成します:
int numbers[5] = {10, 20, 30, 40, 50};角括弧とインデックスを使用して要素にアクセスします:
int firstElement = numbers[0]; // 10を取得
int thirdElement = numbers[2]; // 30を取得配列の境界外の要素にアクセスすると、未定義の動作が発生し、クラッシュの原因となる可能性があります。
自分で試してみよう
#include <stdio.h>
void getElement(int arr[], int size, int index) {
// ここにコードを記述してください
}
int main() {
int size, index;
// 配列のサイズを読み込む
scanf("%d", &size);
int arr[size];
// 配列の要素を読み込む
for(int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
// アクセスするインデックスを読み込む
scanf("%d", &index);
getElement(arr, size, index);
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。