程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 結構,結構設計

結構,結構設計

編輯:C++入門知識

結構,結構設計


  假設要存儲有關籃球運動員的信息,則可能需要存儲他(她)的姓名、工資、身高、體重、平均得分、命中率、助攻次數等。希望有一種數據格式可以將所有這些信息存儲在一個單元中。結構是一種比數組更靈活的數據格式,因為同一個結構可以存儲多種類型的數據,這使得能夠將有關X的信息放在一個結構中,從而將數據的表示合並到一起。如果要跟蹤整個球隊,則可以使用結構數組。結構也是C++ OPP堡壘(類)的基石。

  結構式用戶定義的類型,而結構聲明定義了這種類型的數據屬性。定義了類型後,便可以創建這種類型的變量。因此創建結構包括兩步。首先,定義結構描述——它描述並標記了能夠存儲在結構中的各種數據類型。然後按描述創建結構變量(結構數據對象)。

 

  關鍵字struct表明,這些代碼定義的是一個結構的布局。標識符inflatable是這種數據格式的名稱,以此新類型的名稱為inflatable。大括號中包含的是結構存儲的數據類型的列表,其中每個列表項都是一條聲明語句。

 

創建變量的代碼

struct inflatable gooose;//C語言創建這種類型的變量
inflatable gooose;//C++允許在聲明結構變量時省略關鍵字struct
inflatable hat;
 

  由於hat的類型為inflatable,因此可以使用成員運算符(.)來訪問各個成員。例如,hat.volume指的是結構的volume成員。由於volume成員被聲明為float類型,以此hat.volume相當於是float類型的變量,可以像使用常規float變量那樣來使用它。總之hat是一個結構,hat.volume是一個float變量。順便一說一句,訪問類成員函數的方式是從訪問結構成員變量的方式衍生而來的。

  

  局部結構聲明和外部結構聲明

 

  變量也可以在函數內部和外部定義,C++不提倡使用外部變量,但提倡使用外部結構聲明。

 

  結構初始化

inflatable guest=
{
    "Glorious Gloria",
    1.88;
    29.99
};

inflatable guest=
{"Glorious Gloria",1.88;29.99};

 

 

  結構可以將string類作為成員嗎?

代碼

#include<string>
struct inflatable
{
    std::string name;
    float volume;
    double price;
};

  答案是肯定的,只要使用的編譯器支持對以string對象作為成員的結構進行初始化。

  一定要讓結構定義能夠訪問名稱空間std。為此,可以將編譯指令using移到結構定義之前;也可以像上面那樣,將neme的類型聲明為std::string。

  可以同時完成定義結構和創建結構變量的工作。為此,只需將變量名放在結束括號的後面即可。甚至可以初始化這種方式創建的變量。然而,將結構定義和變量聲明分開,可以使程序更易於閱讀和理解。還可以聲明沒有名稱的結構類型,方法是省略名稱,同時定義一種結構類型和一個這種類型的變量:

struct
{
    int x;
    int y;
}position;//一個結構變量

 

  結構數組

  要創建包含100個inflatable結構的數組,可以這樣做:

inflatable gifts[100];

  這樣,gifts本身將是一個inflatable數組,其中的每個元素(如gifts[0]或gifts[99])都是inflatable對象,可以與成員運算符一起使用:

cin>>gifts[0].volume;
cout<<gifts[99].price<<endl;

  記住,gifts本身是一個數組,而不是結構,因此像gifts.price這樣的表述是無效的。

  要初始化結構數組,可以結合使用初始化數組的規則和初始化結構的規則。由於數組中的每個元素都是結構,因此可以使用結構初始化的方式來提供它的值。因此最終結構為一個被括在花括號中、用逗號分隔的值列表,其中每個值本身又是一個被括在花括號中、用逗號分隔的值列表”

inflatable guests[2]=
{
    {"Bambi",0.5,21.99},
    {"Godzilla",2000,565.99}
};

 

  結構中的位字段

struct torgle_register
{
    unsigned int SN:4;
    unsigned int:4;
    bool goodIn:1;
    bool goodTorgle:1;
};

 

torgle_register tr={14,true,false};
if(tr.goodIn)

  位字段通常用在低級編程中。一般來說,可以使用整形和按位運算符來替代這種方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved