Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 配列および他の構造体を含むStruct | 高度な構造体の活用
C構造体
セクション 4.  2
single

single

配列および他の構造体を含むStruct

メニューを表示するにはスワイプしてください

いくつかの構造体では、1つのオブジェクトが複数の関連するサブオブジェクトを含む場合、ネストされた構造体の配列を使用する必要があります。たとえば、学生が複数のコースを履修できる場合、Student構造体の内部にコースを構造体の配列として表現するのが適切です。

例文法:

OuterStruct.NestedStruct[1].NestedField;

ネストされた構造体配列の要素にアクセスするには、まず外側の構造体を参照し、次にインデックスを使って配列の目的の要素を選択し、最後にその要素の特定のフィールドにアクセスします。

実践例

各学生が名前、年齢、そして複数のコースを持っているとします。各コースにはタイトル、担当教員、単位数が含まれます。

main.c

main.c

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }

この例では、Student構造体は3つの要素を持つcourses型のCourse配列を持っています。各コースには、それぞれタイトル、担当講師、単位数があります。特定のコースにアクセスするには、配列のインデックスとドット演算子を使用します:student.courses[1].instructor

ネストされた構造体の配列を使用することで、コースを持つ学生、商品を持つ店舗、著者を持つ書籍など、繰り返しのサブオブジェクトを持つオブジェクトを表現するのに便利です。

タスク

スワイプしてコーディングを開始

学生は、固定サイズの配列としてネストされた構造体 Student を含む構造体 Course で表されます。各コースには、名前、担当教員、単位数が含まれています。関数はすべてのコースを反復処理し、単位数を合計する必要があります。

戻り値の型が calculateTotalCredits の関数 int を実装してください。

  1. 関数内で、int 型の変数 total0 で初期化します。
  2. for ループを使用して、0 からコース数(3)まで反復処理します。
  3. 各コースについて、credits にアクセスし、それを total に加算します。
  4. 最終的な total の値を返します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  2
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt