码迷,mamicode.com
首页 > 编程语言 > 详细

C++自定义数据类型

时间:2014-05-26 20:20:40      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

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的大小取决于最长的成员的大小。

bubuko.com,布布扣
union mix_t
{
    long l;
    struct 
    {
        short hi;
        short lo;
    }s;
    char c[4];
}mix;
bubuko.com,布布扣

这个union的内存示意图如图下所示(注意32位机器上,char为1byte,short为2bytes,long为4bytes)

bubuko.com,布布扣

 

匿名union

非匿名union(union的名字为price)

bubuko.com,布布扣
struct 
{
    char title[50];
    char author[50];
    union 
    {
        float dollars;
        int rmbs;
    } price;
} book;
bubuko.com,布布扣

匿名union(union没有名字)

bubuko.com,布布扣
struct 
{
    char title[50];
    char author[50];
    union 
    {
        float dollars;
        int rmbs;
    };
} book;
bubuko.com,布布扣

那么这两种结构的不同就是元素的访问方式不同,假如我们要访问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,以此类推。

C++自定义数据类型,布布扣,bubuko.com

C++自定义数据类型

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/chenyg32/p/3751763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!