struct (C++)

struct關鍵字會定義結構型別和/或結構類型的變數。

語法

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

參數

template-spec
選擇性樣板規格。 如需詳細資訊,請參閱 範本規格

struct
struct 關鍵字。

ms-decl-spec
選擇性儲存類別規格。 如需詳細資訊,請參閱 __declspec 關鍵字。

tag
提供給結構的類型名稱。 標記會變成結構範圍內的保留字。 標記是選擇項。 如果省略,則會定義匿名結構。 如需詳細資訊,請參閱 匿名類別類型

base-list
這個結構從中衍生其成員的選擇性類別或結構清單。 如需詳細資訊, 請參閱 基類。 每個基類或結構名稱前面都可以有存取規範(公用、私人、受保護)和 虛擬 關鍵字。 如需詳細資訊,請參閱控制類別成員 存取中的 成員存取資料表。

member-list
結構成員清單。 如需詳細資訊, 請參閱類別成員概觀 。 這裡唯一的差異是 struct 用來取代 class

declarators
指定結構名稱的宣告子清單。 宣告子清單會宣告結構類型的一個或多個執行個體。 如果 結構的所有資料成員都是 public ,宣告子可能會包含初始化運算式清單。 初始化運算式清單在結構中很常見,因為資料成員預設為 public 。 如需詳細資訊, 請參閱 宣告子概觀。

備註

結構類型是使用者定義的複合類型。 它是由具有不同類型的欄位或成員所組成。

在 C++ 中,結構與類別相同,不同之處在于其成員預設為 public

如需 C++/CLI 中 Managed 類別和結構的相關資訊,請參閱 類別和結構

使用結構

在 C 中,您必須明確使用 struct 關鍵字來宣告 結構。 在 C++ 中,在定義類型之後,您不需要使用 struct 關鍵字。

您可以選擇在定義結構類型時宣告變數,方法是將一個或多個逗號分隔的變數名稱放在右大括號和分號之間。

結構變數可以初始化。 每個變數的初始化都必須以大括號括住。

如需相關資訊,請參閱 類別 等位 列舉

範例

#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