演習課題「配列から最初の要素を取り出してみよう」
右のコードエリアには、5 つの要素を持つ配列が定義されています。
この配列の最初の要素の値を出力してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
111
演習課題「配列から特定の要素を取り出してみよう」
右のコードエリアには、5つの要素を持つ配列が定義されています。
入力としてインデックスの値が与えられるので、そのインデックスの要素の値を出力してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
111
#03:配列の要素を取り出してみよう
ここでは、配列の要素をいろいろな方法で取り出してみます。配列ではインデックスを指定して各要素を取り出します。
また、そのインデックスは変数や計算式で指定することができます。
配列は次のように作成します。int data[] = {100, 200}
配列は、大きさを指定して作成することもできます。int data[2];
data[0] = 100;
data[1] = 200;
配列を次のように作成しようとすると、エラーになります。int data[];
data[0] = 100;
data[1] = 200;
1. 直接数値で指定するprintf("%d\n", data[0]);
2. 変数で指定するint number = 0;
printf("%d\n", data[number]);
3. 計算式で指定するint number = 0;
printf("%d\n", data[number + 1]);
配列の範囲外にアクセスして値を書き換えようとしたときなどに、エラーが発生する場合があります。
このようなエラーは、「セグメンテーション違反 (segmentation fault) 」と呼ばれます。
配列のインデックスで、その配列の範囲外にアクセスする (たとえば、大きさが 2 の配列 a で a[1000] にアクセスする) ことは、基本的には許されていません。
そのような許されていない方法で特定のメモリ位置にアクセスしたり、値を書き換えたりしようとすると、セグメンテーション違反となることがあります。
セグメンテーション違反は配列に限定されたエラーではなく、他にもさまざまなことが原因で発生します。
// 配列の要素を取り出してみよう
#include <stdio.h>
int main(void)
{
// int data[] = {100, 200};
int data[2];
data[0] = 100;
data[1] = 200;
int number = 0;
printf("%d\n", data[number + 1]);
}