Cプログラミング · 1 min read · Nov 24, 2025

Linux Cプログラミングチュートリアル パート27 - 構造体の配列

この継続中のCプログラミングチュートリアルシリーズでは、最近構造体について議論しています。構造体の基本、構造体が関数とどのように使用できるか、構造体へのポインタの概念についてすでに説明しました。

さて、構造体の概念をさらに拡張し、理解しやすい例を使用して構造体の配列を作成する方法について説明します。

Cプログラミング言語における構造体の配列

では始めましょう。ここに「student_details」という名前のシンプルな構造体があります。これは、学生のロール番号と成績を保存するために使用できます。

struct student_details{  
int roll_no;  
int marks;  
};

さて、合計5人の学生がいると仮定し、これらの学生の詳細についてユーザーから入力を受け付ける必要があります。この場合、これを実装するための1つの方法は次のとおりです。

#include   
  
struct student_details{  
int roll_no;  
int marks;  
};  
  
int main()  
{  
 struct student_details obj1;  
 struct student_details obj2;  
 struct student_details obj3;  
 struct student_details obj4;  
 struct student_details obj5;  
 ...  
 ...  
 ...  

または、次のようにすることもできます。

#include   
  
struct student_details{  
int roll_no;  
int marks;  
};  
  
int main()  
{  
 struct student_details obj1, obj2, obj3, obj4, obj5;  
 ...  
 ...  
 ...

これらのアプローチに従うことに問題はありません。ただし、懸念されるのは、これらのアプローチがスケーラブルかどうかです。つまり、5人の代わりに、たとえば50のオブジェクトやインスタンスを作成する必要がある場合、これらのアプローチに従うと、コードの記述と保守がはるかに複雑になります。

では、解決策はありますか?はい、あります。より良い方法は、「student_details」構造体の配列を作成することです。以下のようにします。

struct student_details obj[5];

以下は、この構造体配列を利用した完全なプログラムです。

#include   
  
struct student_details{  
int roll_no;  
int marks;  
};  
  
int main()  
{  
 struct student_details obj[5];  
 int i;  
   
 for(i=0;i<5;i++)  
 {  
 printf("\n ロール番号を入力してください: ");  
 scanf("%d", &(obj[i].roll_no));  
 printf("\n 成績を入力してください (100点満点): ");  
 scanf("%d", &(obj[i].marks));  
 }  
   
 printf("\n あなたが入力したデータは次のとおりです::");  
   
 for(i=0;i<5;i++)  
 {  
 printf("\n ロール番号: %d", (obj[i].roll_no));  
 printf("-- 成績: %d", (obj[i].marks));  
 }  
   
  
 return 0;  
}

ここでは、前述の「student_details」構造体を使用し、その型の5つのオブジェクトの配列を作成しました。次に、プログラムはユーザーに学生のロール番号と成績を1つずつ入力するように求めます。各学生に対応する情報は、構造体配列の各インスタンスに保存されます。そして最後に、保存された情報がユーザーに出力として印刷されます。

私の場合の出力は次のとおりです。

ロール番号を入力してください: 1   
   
 成績を入力してください (100点満点): 67   
   
 ロール番号を入力してください: 2   
   
 成績を入力してください (100点満点): 73   
   
 ロール番号を入力してください: 3   
   
 成績を入力してください (100点満点): 56   
   
 ロール番号を入力してください: 4   
   
 成績を入力してください (100点満点): 52   
   
 ロール番号を入力してください: 5   
   
 成績を入力してください (100点満点): 85   
   
 あなたが入力したデータは次のとおりです::   
 ロール番号: 1-- 成績: 67   
 ロール番号: 2-- 成績: 73   
 ロール番号: 3-- 成績: 56   
 ロール番号: 4-- 成績: 52   
 ロール番号: 5-- 成績: 85

このアプローチを使用すると、プログラムを簡単にスケールさせることができます。つまり、情報を保存して印刷する必要がある学生が50人いる場合、配列のサイズを50に増やすだけで、関連する変更は非常に少なくて済みます。コードの残りの部分はそのままです。要するに、配列を使用することで、チュートリアルの最初に説明したアプローチと比較して、スケーラビリティを簡単に扱うことができます。

結論

このチュートリアルでは、構造体の配列の基本概念を説明しました。理解しやすい例を使用して、構造体配列が重要である理由、使用するタイミング、使用方法について説明しました。このチュートリアルの例をあなたのマシンで試してみることをお勧めします。疑問や質問がある場合は、下にコメントを残してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。