struct (C++ )struct (C++)

構造体キーワードは構造体型や構造体型の変数を定義します。The struct keyword defines a structure type and/or a variable of a structure type.


[template-spec] struct [ms-decl-spec] [tag [: base-list ]]
} [declarators];
[struct] tag declarators;


テンプレートの指定 (省略可能)。Optional template specifications. 詳細についてを参照してくださいテンプレートの仕様します。For more information, refer to Template Specifications.

構造体キーワード。The struct keyword.

ストレージ クラスの指定 (省略可能)。Optional storage-class specification. 詳細についてを参照してください、 _ _declspecキーワード。For more information, refer to the __declspec keyword.

構造体に渡す型名。The type name given to the structure. タグは構造体のスコープ内で予約語になります。The tag becomes a reserved word within the scope of the structure. タグは省略できます。The tag is optional. 省略した場合、匿名構造体が定義されます。If omitted, an anonymous structure is defined. 詳細については、次を参照してください。匿名クラス型します。For more information, see Anonymous Class Types.

この構造体がメンバーを継承するクラスまたは構造体のリスト (省略可能)。Optional list of classes or structures this structure will derive its members from. 参照してください基底クラスの詳細についてはします。See Base Classes for more information. 各基本クラスまたは構造体名の前に、アクセス指定子 (パブリックプライベート保護) および仮想キーワード。Each base class or structure name can be preceded by an access specifier (public, private, protected) and the virtual keyword. メンバー アクセス テーブルを参照してください。クラス メンバーへのアクセスの制御詳細についてはします。See the member-access table in Controlling Access to Class Members for more information.

構造体のメンバーのリスト。List of structure members. 参照してくださいクラス メンバーの概要詳細についてはします。Refer to Class Member Overview for more information. ここで唯一の違いは構造体の代わりに使用がクラスします。The only difference here is that struct is used in place of class.

構造体の名前を指定する宣言リスト。Declarator list specifying the names of the structure. 宣言子リストは構造体型の 1 つ以上のインスタンスを宣言します。Declarator lists declare one or more instances of the structure type. 構造体のすべてのデータ メンバーがある場合、宣言子は初期化子リストを含めることができますパブリックします。Declarators may include initializer lists if all data members of the structure are public. データ メンバーがあるために、初期化子リストは構造体で一般的なパブリック既定。Initializer lists are common in structures because data members are public by default. 参照してください概要の宣言子詳細についてはします。See Overview of Declarators for more information.


構造体型はユーザー定義の複合データ型です。A structure type is a user-defined composite type. この型は異なる型のフィールドやメンバーで構成されます。It is composed of fields or members that can have different types.

C++ では、構造体はクラスと同じメンバーが実行される点を除いてパブリック既定。In C++, a structure is the same as a class except that its members are public by default.

マネージ クラスと c++ 構造体について/cli CLI を参照してくださいクラスと構造体します。For information on managed classes and structs in C++/CLI, see Classes and Structs.

構造体の使用Using a Structure

C では、明示的に使用する必要あります、構造体キーワードを構造体を宣言します。In C, you must explicitly use the struct keyword to declare a structure. C++ では使用する必要はありません、構造体キーワード、型が定義した後にします。In C++, you do not need to use the struct keyword after the type has been defined.

右中かっことセミコロンの間に 1 つ以上のコンマ区切りの変数名を挿入することで構造体型を定義している場合は、変数を宣言してもかまいません。You have the option of declaring variables when the structure type is defined by placing one or more comma-separated variable names between the closing brace and the semicolon.

構造体の変数は初期化できます。Structure variables can be initialized. 各変数の初期化は中かっこで囲む必要があります。The initialization for each variable must be enclosed in braces.

関連情報については、次を参照してください。クラス共用体、およびenumします。For related information, see class, union, and enum.


#include <iostream>
using namespace std;

struct PERSON {   // Declare PERSON struct type
    int age;   // Declare member types
    long ss;
    float weight;
    char name[25];
} family_member;   // Define object of type PERSON

struct CELL {   // Declare CELL bit field
    unsigned short character  : 8;  // 00000000 ????????
    unsigned short foreground : 3;  // 00000??? 00000000
    unsigned short intensity  : 1;  // 0000?000 00000000
    unsigned short background : 3;  // 0???0000 00000000
    unsigned short blink      : 1;  // ?0000000 00000000
} screen[25][80];       // Array of bit fields

int main() {
    struct PERSON sister;   // C style structure declaration
    PERSON brother;   // C++ style structure declaration
    sister.age = 13;   // assign values to members
    brother.age = 7;
    cout << "sister.age = " << sister.age << '\n';
    cout << "brother.age = " << brother.age << '\n';

    CELL my_cell;
    my_cell.character = 1;
    cout << "my_cell.character = " << my_cell.character;
// Output:
// sister.age = 13
// brother.age = 7
// my_cell.character = 1