菅構造

9249 ワード

struct構造体の定義


構造体はstructのキーワードに続く構造体名で定義される.ブレースの内部では、メンバー変数は宣言されますが、初期化されません.指定されたコードブロックは、名前Person 宣言されたメンバー変数name and age .
// `struct` keyword and structure name
struct Person{
  // uninitialized member variables
  char* name;
  int age;
};

struct構造体の初期化


構造データ型は、structキーワードを使用して、定義された構造型を使用して初期化されます.与えられたコードブロックは、初期化する2つの方法を示しますPerson 型構造体person1 and person2 .
// `Person` structure declaration
struct Person{
  char* name;
  int age;
};

// designated initialization with member variable names
struct Person person1 = {.name = "Cosmo", .age = 36};

// implicit initialization following order of member variables
struct Person person2 = {"George", 29};

カスタムデータ型


構造体は、複雑なデータを表すために使用されるカスタムデータ型の定義を許可します.構造のカスタマイズは、正確に現実世界のデータをモデル化する柔軟性を提供します.

構造を持つデータ型のグループ化


構造体は、単一のユーザー定義型に異なるデータ型をグループ化できます.これは、単一の型に同じデータ型をグループ化することができる配列とは異なります.指定されたコードブロックは、名前Person さまざまな基本データ型をメンバー変数とします.
// `Person` structure definition
struct Person{
  // member variables that vary in type
  char* name;
  int age;
  char middleInitial;
};

ドット表記によるメンバー変数へのアクセス


初期化された構造体変数はドットでアクセスできます. ) 演算子.与えられたコードブロックはPerson 名前person1 名前にアクセスするmember 変数printf() 文.
// `Person` structure declaration
struct Person{
  // member variables
  char* name;
  int age;
  char middleInitial;
};

// initialization of `person1`
struct Person person1 = {.name = "George", .age = 28, .middleInitial = "C"};

// accessing `name` in `person1`
printf("My name is %s", person1.name);
// OUTPUT: My name is George

構造体変数


構造体内で定義された変数はメンバー変数として知られています.指定されたコードブロックは、指定された構造体を定義しますPerson メンバ変数name 活字char* , and age 活字int .
// Person structure declaration
struct Person{
  // member variables
  char* name;
  int age;
};

構造型ポインタ


を使用して構造体へのポインタを定義できますstruct キーワード、構造型、およびポインタ* ) シンボル.初期化された構造体のメモリアドレスはシンボルを使用してアクセスできます& ). 与えられたコードブロックはPerson データ型person1 .
// Person structure declaration
struct Person{
  // member variables
  char* name;
  int age;
};

// person1 initialization
struct Person person1 = {"George", 28};

// person1Pointer initializated to the memory address of person1
struct Person* person1Pointer = &person1;

矢印通知でのメンバー変数へのアクセス


構造体のメンバ変数は、矢印のポインタを使用してアクセスできます-> ) 表記.与えられたコードブロックはPerson personType 1という名前のポインター型.インサイドprintf() ステートメントname メンバー変数person1 が矢印を使ってアクセスされる(-> ) 表記.
// `Person` structure declaration
struct Person{
  // member variables
  char* name;
  int age;
};

// `person1` intialization
struct Person person1 = {"Jerry", 29};

// `person1Pointer` intialization to memory address to `person1`
struct Person* person1Pointer = &person1;

// accessing `name` through `person1Pointer`
printf("My name is %s", person1Pointer->name);
// OUTPUT: My name is Jerry

機能を渡す


構造体は、struct キーワードは関数定義の構造名を続けます.指定したコードブロックは、関数名myFunc()Person パラメータperson1 .
// Person structure declaration
struct Person{
  // member variables
  char* name;
  int age;
};

// declaring Person type parameter
void myFunc(struct Person person1);

関数への構造体ポインタの渡し


構造ポインタは、struct キーワード、構造体名、およびポインタシンボル* ) 関数定義で.指定したコードブロックは、関数名myFunc()Person ポインタパラメータperson1 pointer .