首页 > 代码库 > C++自定义数据类型
C++自定义数据类型
C++中有以下几种自定义数据类型方式:typedef、union、enum
typedef
typedef只是用于重命名一种已有的数据类型。
typedef char C; //C c即char c typedef char field [50]; //field s即char[50]
注意第二种用法,数组的维数[50]是写在最后的。
union
union中的每个成员共享同一段内存(每个成员的起始内存位置都是一样的),整个union的大小取决于最长的成员的大小。
union mix_t { long l; struct { short hi; short lo; }s; char c[4]; }mix;
这个union的内存示意图如图下所示(注意32位机器上,char为1byte,short为2bytes,long为4bytes)
匿名union
非匿名union(union的名字为price)
struct { char title[50]; char author[50]; union { float dollars; int rmbs; } price; } book;
匿名union(union没有名字)
struct { char title[50]; char author[50]; union { float dollars; int rmbs; }; } book;
那么这两种结构的不同就是元素的访问方式不同,假如我们要访问dollars这个元素,第一种是book.price.dollars,第二种是book.dollars。
enum
枚举类型,其中枚举值是常量,而不是变量。
enum days{Mon, Tue, Wed, Thur, Fri, Sat, Sun}; days today = Mon;
其中Mon其实是0,Tue是1,以此类推。
当然Mon不一定要从0开始,所以可以这样写……
enum days{Mon=1, Tue, Wed, Thur, Fri, Sat, Sun};
其中Mon是1,Tue是2,以此类推。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。