Menu
Coddy logo textTech

構造体変数の作成

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 40/63。

struct 型を一度宣言すると、それを使用してデータを保持する実際の変数を作成できます。構造体変数の作成は、C言語における他の変数の宣言とまったく同じように機能します。つまり、データ型を指定し、その後に変数名を記述します。

構造体変数を作成するための構文は次のとおりです。

struct StructureName variableName;

例えば、前回のレッスンの Point 構造体を使用すると:

struct Point p1;
struct Point p2;

これにより、p1p2という2つの変数が作成されます。これらは両方ともstruct Point型です。各変数は、構造体で定義されているxおよびyメンバの個別のコピーを保持します。

intfloatのような組み込み型と同じように、必要な数だけ構造体変数を作成できます。各構造体変数は独立しており、そのメンバに異なる値を保持できます。一度作成すれば、これらの変数は座標データを整理された方法で格納する準備が整います。

challenge icon

チャレンジ

簡単

異なる型の複数の構造体変数を作成する方法を示すCプログラムを作成してください。プログラムは以下の要件を満たす必要があります:

  1. 以下のメンバを持つ Rectangle という名前の struct を定義します:
    • 整数型の width
    • 整数型の height
  2. 以下のメンバを持つ Student という名前の struct を定義します:
    • 整数型の id
    • サイズ30の文字配列 name
    • 浮動小数点型の gpa
  3. main関数内で、以下の構造体変数を作成します:
    • rect1 および rect2 という名前の2つの Rectangle 変数
    • student1student2、および student3 という名前の3つの Student 変数
  4. 作成された各変数について、以下の正確な形式で確認メッセージを出力します:
    • Rectangle variable rect1 created
    • Rectangle variable rect2 created
    • Student variable student1 created
    • Student variable student2 created
    • Student variable student3 created
  5. 作成された構造体変数の総数を次の形式で出力します:Total struct variables created: 5
  6. 各型のメモリ使用量を次の形式で出力します:
    • Memory per Rectangle: [size] bytes
    • Memory per Student: [size] bytes

このチャレンジでは、複数の構造体型を定義し、それぞれの型の変数を複数作成する能力をテストします。各構造体変数は独立しており、独自のメモリ領域を持っています。これは、プログラム内で異なる種類のデータを整理するために構造体をどのように使用できるかを示しています。

チートシート

構造体変数を作成するには、他の変数を宣言するのと同じ構文を使用します:

struct StructureName variableName;

複数の構造体変数を作成する例:

struct Point p1;
struct Point p2;

各構造体変数は独立しており、構造体で定義されたすべてのメンバの個別のコピーを保持します。組み込み型と同様に、必要な数だけ構造体変数を作成できます。

自分で試してみよう

#include <stdio.h>

int main() {
    // TODO: ここで構造体 Rectangle を定義してください
    
    // TODO: ここで構造体 Student を定義してください
    
    // TODO: ここで構造体変数を作成してください
    
    // TODO: 作成された各変数に対して確認メッセージを出力してください
    
    // TODO: 作成された構造体変数の総数を出力してください
    
    // TODO: sizeof() を使用して、各構造体型のメモリ使用量を出力してください
    
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン