C++の基礎: データの構造体を学ぶ

提供: Support
移動先: 案内検索

概要

一般にプログラミングを行う場合、多くの変数があり、これらの変数の一部はオブジェクトのプロパティです。たとえば、C ++で学生に関するデータベースを作成する場合、各学生は保存するための同様のプロパティを持っており、これらのプロパティを1つのグループに集約することができます。 この記事では、構造体について詳しく説明します。


C & C++プログラミングにおいて、データ構造体(struct)とは、メモリ上のデータブロックであり、名前を付けてグループ化されたデータ要素の集まりです。これらのデータ要素は、メンバーと呼ばれる変数(整数、浮動小数点、文字列...)であり、単一の名前で新しい変数に定義することができます。これらのデータ要素は,異なる型,異なる長さを持つことができます。データ構造は、以下のstruct構文を使用して宣言できます。

struct struct_name 
{
  // List data members here
} datao

構造体は主にC言語で使用されていますが、C++でも同じようにデータを保存することができます。構造体とクラスの主な違いは、クラスはデータと関数の両方を取得できるのに対し、構造体はデータのみを持ち、関数は外部から使用できることです。構造体の利点の1つは、サイズが固定されていることです。ファイル内の正確な位置で複数のデータブロックを簡単に読み書きできます。

構造体に関するいくつかの例

新しい構造体とそのメンバーの作成

学生の構造体を定義するために、簡単な例を挙げてみましょう。

struct st_student 
{
  char name[32];  
  int age;
  float weight;
};

構造体からデータオブジェクトを作成する

上記で定義したst_student構造体を使用して以下のようなデータオブジェクト配列を作成できます。

struct st_student student1;

ここでは、st_studentと同じ名前(name)、年齢(age)、体重(weight)のメンバーを持つstudent1データオブジェクトを使用しています。

構造体とデータオブジェクトを同時に作成する

上記の例の他に、以下のように新しい構造体と構造体オブジェクトを同時に定義することができます。

struct st_student 
{
  char name[32];  
  int age;
  float weight;
} st

データオブジェクト配列の作成 (構造体配列)

以下のように構造体の配列を作成することができます。

struct st_student  students[100];

構造体のメンバー変数を設定する

各構造体オブジェクトのメンバーは、以下のように設定・変更することができます。

strcpy(students[0].name, "John Smith");
students[0].age=25;
students[0].weight=68.5;
 
strcpy(students[1].name, "Kate White");
students[1].age=27;
students[1].weight=55.2;

構造体メンバーの出力

構造体の各メンバーは、以下のように表示されます。

std:: cout << "Name:"   << students[0].name << '\n';
std:: cout << "Age:"    << students[0].age << '\n';
std:: cout << "Weight:" << students[0].weight << '\n';
 
std:: cout << "Name:"   << students[1].name << '\n';
std:: cout << "Age:"    << students[1].age << '\n';
std:: cout << "Weight:" << students[1].weight << '\n';

データオブジェクトのポインタ (構造体のポインタ)

構造体オブジェクトは、以下のようにポインタとして定義することもできます。

struct st_student  *student1;

このポインタは、変数を格納するためのメモリに割り当てられるべきです。

完全なサンプルコード

以下は、ここで紹介した全てのコード例です。

struct st_student 
{
  char name[32];  
  int age;
  float weight;
};
 
struct st_student  students[100];
 
int main()
{
strcpy(students[0].name, "John Smith");
students[0].age=25;
students[0].weight=68.5;
 
strcpy(students[1].name, "Kate White");
students[1].age=27;
students[1].weight=55.2;
 
std:: cout << "Name:"   << students[0].name << '\n';
std:: cout << "Age:"    << students[0].age << '\n';
std:: cout << "Weight:" << students[0].weight << '\n';
 
std:: cout << "Name:"   << students[1].name << '\n';
std:: cout << "Age:"    << students[1].age << '\n';
std:: cout << "Weight:" << students[1].weight << '\n';
}

関連情報