工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C構造体

C 構造体

このチュートリアルでは、例を使用して C プログラミングの構造体型について学習します。

C プログラミングでは、構造体 (または構造体) は、1 つの名前の下にある変数 (さまざまな型の可能性があります) のコレクションです。


構造の定義

構造体変数を作成する前に、そのデータ型を定義する必要があります。構造体を定義するには、struct キーワードが使用されています。

構造体の構文

struct structureName {
  dataType member1;
  dataType member2;
  ...
};

たとえば、

struct Person {
  char name[50];
  int citNo;
  float salary;
};

ここでは、派生型 struct Person が定義されています。これで、このタイプの変数を作成できます。


構造体変数の作成

struct の場合 型が宣言されていますが、ストレージまたはメモリは割り当てられていません。特定の構造型のメモリを割り当てて操作するには、変数を作成する必要があります。

構造変数を作成する方法は次のとおりです:

struct Person {
  // code
};

int main() {
  struct Person person1, person2, p[20];
  return 0;
}

struct を作成する別の方法 変数は:

struct Person {
   // code
} person1, person2, p[20];

どちらの場合も、


構造体のメンバーへのアクセス

構造体のメンバーにアクセスするために使用される演算子には 2 種類あります。

<オール>
  • . - 会員オペレーター
  • -> - 構造ポインタ演算子 (次のチュートリアルで説明します)
  • salary にアクセスしたいとします。 person2 の .方法は次のとおりです。

    person2.salary

    例 1:C++ 構造体

    #include <stdio.h>
    #include <string.h>
    
    // create struct with person1 variable
    struct Person {
      char name[50];
      int citNo;
      float salary;
    } person1;
    
    int main() {
    
      // assign value to name of person1
      strcpy(person1.name, "George Orwell");
    
      // assign values to other person1 variables
      person1.citNo = 1984;
      person1. salary = 2500;
    
      // print struct variables
      printf("Name: %s\n", person1.name);
      printf("Citizenship No.: %d\n", person1.citNo);
      printf("Salary: %.2f", person1.salary);
    
      return 0;
    }

    出力

    Name: George Orwell
    Citizenship No.: 1984
    Salary: 2500.00

    このプログラムでは、struct を作成しました。 Person という名前 . Person の変数も作成しました person1という名前 .

    main() で 、 Person で定義された変数に値を割り当てました person1 の場合 オブジェクト。

    strcpy(person1.name, "George Orwell");
    person1.citNo = 1984;
    person1. salary = 2500;

    strcpy() を使用していることに注意してください person1.name に値を割り当てる関数 .

    これは name のためです char です 配列 (C 文字列) であり、代入演算子 = は使用できません 文字列を宣言した後にそれを使用します。

    最後に、person1 のデータを印刷しました .


    キーワード typedef

    typedef を使用します キーワードを使用して、データ型の別名を作成します。変数を宣言する構文を簡素化するために、一般的に構造体で使用されます。

    たとえば、次のコードを見てみましょう:

    struct Distance{
      int feet;
      float inch;
    };
    
    int main() {
      struct Distance d1, d2;
    }

    typedef を使用できます 簡略化された構文で同等のコードを書くには:

    typedef struct Distance {
      int feet;
      float inch;
    } distances;
    
    int main() {
      distances d1, d2;
    }

    例 2:C++ の typedef

    #include <stdio.h>
    #include <string.h>
    
    // struct with typedef person
    typedef struct Person {
      char name[50];
      int citNo;
      float salary;
    } person;
    
    int main() {
    
      // create  Person variable
      person p1;
    
      // assign value to name of p1
      strcpy(p1.name, "George Orwell");
    
      // assign values to other p1 variables
      p1.citNo = 1984;
      p1. salary = 2500;
    
      // print struct variables
      printf("Name: %s\n", p1.name);
      printf("Citizenship No.: %d\n", p1.citNo);
      printf("Salary: %.2f", p1.salary);
    
      return 0;
    }

    出力

    Name: George Orwell
    Citizenship No.: 1984
    Salary: 2500.00

    ここでは、typedef を使用しています。 Person で エイリアス person を作成するための構造 .

    // struct with typedef person
    typedef struct Person {
      // code
    } person;

    Person を宣言するだけです。 person を使用した変数 エイリアス:

    // equivalent to struct Person p1
    person p1;

    ネストされた構造

    C プログラミングでは、構造体内に構造体を作成できます。たとえば、

    struct complex {
      int imag;
      float real;
    };
    
    struct number {
      struct complex comp;
      int integers;
    } num1, num2;

    imag を設定したいとします。 num2 個中 変数を 11 に .方法は次のとおりです。

    num2.comp.imag = 11;

    例 3:C++ のネストされた構造体

    #include <stdio.h>
    
    struct complex {
      int imag;
      float real;
    };
    
    struct number {
      struct complex comp;
      int integer;
    } num1;
    
    int main() {
    
      // initialize complex variables
      num1.comp.imag = 11;
      num1.comp.real = 5.25;
    
      // initialize number variable
      num1.integer = 6;
    	
      // print struct variables
      printf("Imaginary Part: %d\n", num1.comp.imag);
      printf("Real Part: %.2f\n", num1.comp.real);
      printf("Integer: %d", num1.integer);
    
      return 0;
    }

    出力

    Imaginary Part: 11
    Real Part: 5.25
    Integer: 6

    C で構造体を使用する理由

    人物に関する情報 (名前、市民権番号、給与) を保存するとします。さまざまな変数 name を作成できます , citNo そして給料 この情報を保存します。

    複数の人の情報を保存する必要がある場合はどうしますか?ここで、1 人あたりの情報ごとに異なる変数を作成する必要があります:name1 , citNo1 , 給与1 , name2 , citNo2 , salary2 など

    より良いアプローチは、すべての関連情報のコレクションを 1 つの名前 Person で持つことです。 構造化して、すべての人に使用してください。


    構造体の詳細


    C言語

    1. C# Hello World - 初めての C# プログラム
    2. C# のキーワードと識別子
    3. C# 変数と (プリミティブ) データ型
    4. C# 演算子
    5. C# のビット単位およびビット シフト演算子
    6. C# の基本的な入力と出力
    7. C# 式、ステートメント、およびブロック (例付き)
    8. C# コメント
    9. C# switch ステートメント
    10. C# 三項 (? :) 演算子
    11. C# break ステートメント