Menu
Coddy logo textTech

構造体の宣言

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

struct とは何かを理解したところで、独自の構造体型を作成する方法を学ぶ時が来ました。C言語で struct を宣言するには、カスタムデータ型の設計図を定義する特定の構文に従います。

struct を宣言するための基本的な構文は以下の通りです:

struct StructureName {
    datatype member1;
    datatype member2;
    // ... その他のメンバ
};

各部分の仕組みは次のとおりです。structキーワードから始め、構造体の名前を続け、次に波括弧の中にすべてのメンバ変数をリストします。各メンバは、データ型と名前を持つ通常の変数と同じように宣言されます。閉じ括弧の後のセミコロンを忘れないでください!

例えば、2D空間の点を表す構造体を作成するには:

struct Point {
    int x;
    int y;
};

この宣言は、struct Point という名前の新しいデータ型を作成します。これには xy という2つの整数メンバが含まれています。一度宣言されると、この構造体型はプログラム全体で使用でき、座標情報を整理された方法で保持する変数を作成するために使用できます。

challenge icon

チャレンジ

簡単

図書館システムで本を表現するための struct を定義するCプログラムを作成してください。プログラムは以下の内容を含める必要があります:

  1. 以下のメンバを含む Book という名前の struct を定義します:
    • 本の識別番号を格納するための整数型の id
    • 本のタイトルを格納するためのサイズ 50 の文字配列 title
    • ページ数を格納するための整数型の pages
    • 本の価格を格納するための浮動小数点型の price
  2. 構造体を定義した後、確認メッセージを表示します:Book struct defined successfully!
  3. sizeof() を使用して、Book 構造体のサイズ(バイト単位)を次の形式で表示します:Size of Book struct: [size] bytes
  4. 各メンバのサイズを個別に表示します:
    • Size of id: [size] bytes
    • Size of title: [size] bytes
    • Size of pages: [size] bytes
    • Size of price: [size] bytes

このチャレンジでは、struct キーワードの適切な使用、適切なデータ型によるメンバ宣言、閉じ括弧の後のセミコロンなど、構造体宣言の構文に関する理解をテストします。また、sizeof() 演算子を使用して、C言語が構造体メンバにどのようにメモリを割り当てるかについても確認します。

正確なサイズの数値はシステムのアーキテクチャによって異なる場合がありますが、プログラムが正常にコンパイルされ実行されるためには、構造体の定義構文が正しくなければならないことに注意してください。

チートシート

C言語で struct を宣言するには、次の構文を使用します:

struct StructureName {
    datatype member1;
    datatype member2;
    // ... その他のメンバ
};

struct キーワードで始め、構造体名を続け、波括弧の中にすべてのメンバ変数を記述します。各メンバはデータ型と名前で宣言されます。閉じ括弧の後のセミコロンを忘れないでください!

Point構造体の例:

struct Point {
    int x;
    int y;
};

これにより、プログラム全体で使用できる2つの整数メンバを持つ、struct Point という名前の新しいデータ型が作成されます。

自分で試してみよう

#include <stdio.h>

int main() {
    // TODO: ここでBook構造体を定義してください
    
    
    // 確認メッセージを表示
    printf("Book struct defined successfully!\n");
    
    // TODO: Book構造体とそのメンバのサイズを表示してください
    
    
    return 0;
}
quiz icon腕試し

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

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