fbpx
维基百科

複合型別

電腦科學中,複合型別是一種資料型別,它可以原始型別和其它的複合型別所構成。構成一個複合型別的動作,又稱作組合

C/C++ 编辑

structCC++ 的複合型別概念,是一個將欄位成員以一定組合方式所組成的資料型別。因為在宣告時,使用了關鍵字 struct,所以它簡稱為結構,或者更精確地說使用者定義的資料結構

在 C++ 裡,structclass的唯一區別是預設的存取等級,class私有的struct 則是公有的

注意尽管的概念和關鍵字class是C++新引入的,C語言也已具備粗糙的 struct 型別。對於所有的意圖和目的, C++ 的struct是 C struct超集:几乎所有合法的 C struct 也是合法的 C++ struct,並有著相同的語義。

struct 宣告組成一個欄位清單,其中的每一個可以是任意型別。對於 struct 物件所需的儲存區,即為全部欄位的總合,再加上內部的補白。

例如:

 struct Account {  int account_number;  char *first_name;  char *last_name;  float balance;  }; 

定義一個稱為 struct Account 的型別。若要建立此型別的新變數,可以寫為 struct Account myAccount;,它有一個以 myAccount.account_number 存取的整數組件,且有一個以 myAccount.balance 存取的浮點數組件,以及 first_namelast_name 組件。myAccount 包含這四個數值,且這四個欄位可各自改變。由于 struct account 的寫法有些累贅,在 C 代碼中,typedef 語句並不罕見,其為 struct 提供一個更簡便的同義詞。例如:

 typedef struct Account_ {  int account_number;  char *first_name;  char *last_name;  float balance;  } Account; 

在 C++ 中,並不需要 typedef,因為使用了 struct 的型別定義,已是命名空間的一部分,所以該型別可稱作 struct Account 或較簡單的 Account

其它例子,一個使用了浮點數資料型別的三維向量複合型別,可如此建立:

 struct Vector {  float x;  float y;  float z;  }; 

一個以 Vector 複合型別為型別的變數名 velocity,可以宣告為 Vector velocity;,可以用點运算符(.)存取 velocity 的成員。例如,velocity.x = 5;,會使 velocity 的組件 x 等於 5。

同樣地,一個顏色結構可如此建立:

 struct Color {  int red;  int green;  int blue;  }; 

在三維圖像中,必須經常不斷追蹤每一個頂點的位置和顏色。可以使用之前所建立的 VectorColor 複合型別來建立 Vertex 複合型別:

 struct Vertex {  Vector position;  Color color;  }; 

以同樣的格式建立一個 Vertex 型別的變數:Vertex v;,並以如下方式指派數值給 v

 v.position.x = 0.0;  v.position.y = 1.5;  v.position.z = 0.0;  v.color.red = 128;  v.color.green = 0;  v.color.blue = 255; 

原始子型別檢查 编辑

剛開始使用的 struct,是用來建構組合資料型別,不過有時它是用來避開標準 C 協定,以建立原始子型別檢查(primitive subtyping)。例如,共同的網路協議依賴於以下事實,C 編譯器以可預料的方法,在結構欄位之間補白;因此代碼

 struct ifoo_old_stub {  long x, y;  };  struct ifoo_version_42 {  long x, y, z;  char *name;  long a, b, c;  };  void operate_on_ifoo(struct ifoo_old_stub *);  struct ifoo_version_42 s;  . . .  operate_on_ifoo(&s); 

將可正確運作。

參閱 编辑

複合型別, 在電腦科學中, 是一種資料型別, 它可以原始型別和其它的所構成, 構成一個的動作, 又稱作組合, 编辑主条目, struct是, 的概念, 是一個將欄位或成員以一定組合方式所組成的資料型別, 因為在宣告時, 使用了關鍵字, struct, 所以它簡稱為結構, 或者更精確地說使用者定義的資料結構, struct, 與class的唯一區別是預設的存取等級, class是私有的, struct, 則是公有的, 注意尽管类的概念和關鍵字class是c, 新引入的, c語言也已具備粗糙的, struct, 型別,. 在電腦科學中 複合型別是一種資料型別 它可以原始型別和其它的複合型別所構成 構成一個複合型別的動作 又稱作組合 C C 编辑主条目 C 类 struct是 C 和 C 的複合型別概念 是一個將欄位或成員以一定組合方式所組成的資料型別 因為在宣告時 使用了關鍵字 struct 所以它簡稱為結構 或者更精確地說使用者定義的資料結構 在 C 裡 struct 與class的唯一區別是預設的存取等級 class是私有的 struct 則是公有的 注意尽管类的概念和關鍵字class是C 新引入的 C語言也已具備粗糙的 struct 型別 對於所有的意圖和目的 C 的struct是 C struct 的超集 几乎所有合法的 C struct 也是合法的 C struct 並有著相同的語義 struct 宣告組成一個欄位清單 其中的每一個可以是任意型別 對於 struct 物件所需的儲存區 即為全部欄位的總合 再加上內部的補白 例如 struct Account int account number char first name char last name float balance 定義一個稱為 struct Account 的型別 若要建立此型別的新變數 可以寫為 struct Account myAccount 它有一個以 myAccount account number 存取的整數組件 且有一個以 myAccount balance 存取的浮點數組件 以及 first name 和 last name 組件 myAccount 包含這四個數值 且這四個欄位可各自改變 由于 struct account 的寫法有些累贅 在 C 代碼中 typedef 語句並不罕見 其為 struct 提供一個更簡便的同義詞 例如 typedef struct Account int account number char first name char last name float balance Account 在 C 中 並不需要 typedef 因為使用了 struct 的型別定義 已是命名空間的一部分 所以該型別可稱作 struct Account 或較簡單的 Account 其它例子 一個使用了浮點數資料型別的三維向量複合型別 可如此建立 struct Vector float x float y float z 一個以 Vector 複合型別為型別的變數名 velocity 可以宣告為 Vector velocity 可以用點运算符 存取 velocity 的成員 例如 velocity x 5 會使 velocity 的組件 x 等於 5 同樣地 一個顏色結構可如此建立 struct Color int red int green int blue 在三維圖像中 必須經常不斷追蹤每一個頂點的位置和顏色 可以使用之前所建立的 Vector 和 Color 複合型別來建立 Vertex 複合型別 struct Vertex Vector position Color color 以同樣的格式建立一個 Vertex 型別的變數 Vertex v 並以如下方式指派數值給 v v position x 0 0 v position y 1 5 v position z 0 0 v color red 128 v color green 0 v color blue 255 原始子型別檢查 编辑剛開始使用的 struct 是用來建構組合資料型別 不過有時它是用來避開標準 C 協定 以建立原始子型別檢查 primitive subtyping 例如 共同的網路協議依賴於以下事實 C 編譯器以可預料的方法 在結構欄位之間補白 因此代碼 struct ifoo old stub long x y struct ifoo version 42 long x y z char name long a b c void operate on ifoo struct ifoo old stub struct ifoo version 42 s operate on ifoo amp s 將可正確運作 參閱 编辑物件組合 取自 https zh wikipedia org w index php title 複合型別 amp oldid 71382341, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。