在
计算机科学中,复合类型是一种
数据类型,它可以原始类型和其它的复合类型所构成。构成一个复合类型的动作,又称作组合。
struct是C和C++的复合类型概念,是一个将字段或成员以一定组合方式所组成的数据类型。因为在宣告时,使用了关键字struct,所以它简称为结构,或者更精确地说用户定义的数据结构。
注意尽管类的概念和关键字class是C++新引入的,C语言也已具备粗糙的struct类型。对于所有的意图和目的, C++ 的struct是 Cstruct的
超集:几乎所有合法的 Cstruct也是合法的 C++struct,并有着相同的语义。
定义一个称为struct Account的类型。若要创建此类型的新变量,可以写为struct Account myAccount;,它有一个以myAccount.account_number访问的整数组件,且有一个以myAccount.balance访问的浮点数组件,以及first_name和last_name组件。myAccount包含这四个数值,且这四个字段可各自改变。由于struct account的写法有些累赘,在 C 代码中,typedef语句并不罕见,其为struct提供一个更简便的同义词。例如:
在 C++ 中,并不需要typedef,因为使用了struct的类型定义,已是名字空间的一部分,所以该类型可称作struct Account或较简单的Account。
一个以Vector复合类型为类型的变量名velocity,可以宣告为Vector velocity;,可以用点运算符(.)访问velocity的成员。例如,velocity.x = 5;,会使velocity的组件x等于 5。
刚开始使用的struct,是用来建构组合数据类型,不过有时它是用来避开标准 C 协议,以创建原始
子类型检查(primitive subtyping)。例如,共同的网络协议依赖于以下事实,C 编译器以可预料的方法,在结构字段之间补白;因此代码