C言語の配列とは?特性と基本操作をわかりやすく解説
配列(アレイ)とは、単一の変数名で管理される、同種のデータ項目の連続的な集合体です。
例: int student[30];
この場合、student が配列名となり、1つの変数名で30個分のデータ項目を格納できます。
配列の主な特性
配列には以下のような特徴があります。
- 配列は常に連続したメモリ領域に格納されます。
- 同じ型の複数の値を格納でき、それらを1つの名前で参照できます。
- ポインタは、配列名に割り当てられたメモリブロックの先頭位置を指します。
- 配列のデータ型は整数(int)、文字(char)、浮動小数点数(float)などであり、宣言時にのみ初期化できます。
- 配列内の特定の要素は、他の要素に影響を与えることなく個別に変更できます。
- すべての要素は添字(インデックス番号)によって識別できます。
配列に対する基本操作
配列に対して実行できる主な操作は次のとおりです。
- 探索(サーチ) ― 特定の要素が配列内に存在するかどうかを調べる操作です。
- 整列(ソート) ― 配列内の要素を昇順または降順に並べ替える操作です。
- 走査(トラバーサル) ― 配列内の全要素を順番に処理していく操作です。
- 挿入(インサート) ― 配列に新しい要素を追加する操作です。
- 削除(デリート) ― 配列から要素を取り除く操作です。
サンプルプログラム
以下は、配列内の要素を探索するC言語プログラムの例です。
#include <stdio.h>
#define MAX 100 // 配列の最大サイズ
int main(){
int array[MAX];
int size, i, search, found;
printf("配列のサイズを入力してください: ");
scanf("%d", &size);
printf("配列の要素を入力してください: ");
for(i = 0; i < size; i++){
scanf("%d", &array[i]);
}
printf("\n探索したい要素を入力してください: ");
scanf("%d", &search);
found = 0;
for(i = 0; i < size; i++){
if(array[i] == search){
found = 1;
break;
}
}
if(found == 1){
printf("\n%d は %d 番目の位置に見つかりました\n", search, i + 1);
} else {
printf("\n%d は配列内に存在しません\n", search);
}
return 0;
}プログラムのポイント
このプログラムでは、まず配列のサイズと各要素をユーザーから入力として受け取ります。その後、forループを使って配列を先頭から順番になぞり(線形探索)、目的の値と一致する要素が見つかった時点でフラグ変数 found を立ててループを抜けます。最後に、探索結果に応じて「見つかった位置」または「見つからなかったこと」を出力します。
実行結果
上記プログラムの実行例は以下のとおりです。
Enter size of array: 5 Enter elements in array: 11 24 13 12 45 Enter element to search: 13 13 is found at position 3
このように、配列と線形探索の仕組みを理解することは、C言語におけるデータ管理の基礎を身につける第一歩となります。ぜひ実際にコードを動かして、挙動を確認してみてください。
-
C言語入門:ポインタ配列とポインタへのポインタ(二重ポインタ)の基本をわかりやすく解説
はじめにC言語において、ポインタはメモリを直接扱える強力な機能です。本記事では、その応用形である「ポインタ配列」と「ポインタへのポインタ(二重ポインタ)」について、宣言方法・初期化方法・値へのアクセス方法を、サンプルコードと実行結果とともに順を追って解説します。 ポインタ配列とは通常の変数と同様に、ポインタも配列として宣言することができます。これを「ポインタ配列」と呼びます。各要素がそれぞれ別のアドレスを保持できるため、複数のデータを間接的に扱う際に便利です。 宣言方法データ型 *ポインタ名 [サイズ];例えば、次のように宣言します。int *p[5]; // int型の要素アドレスを5つ格納
-
C言語の文字操作を徹底解説!宣言方法と入出力関数の使い方
Cプログラミング言語において、文字(character)は英大文字(A〜Z)、英小文字(a〜z)、数字(0〜9)、空白(ホワイトスペース)、または特殊記号のいずれかとして扱われます。文字の宣言方法C言語で文字型変数を宣言する際は、char 型を使用します。文字定数はシングルクォーテーション( )で囲んで指定します。char a = A; /* 文字定数を使用した宣言 */このように宣言することで、変数 a に1文字分のデータを格納できます。文字入出力関数の種類C言語には、文字を入出力するための関数がいくつか用意されています。代表的なものは以下の3組です。scanf / printf: 書式指定