美文网首页c++ primer note
C++内置数据类型

C++内置数据类型

作者: lusoer | 来源:发表于2017-02-21 00:19 被阅读60次

    一般的数据类型我们都很熟悉,也符合我们数学上的习惯,比如int,double,float,等之类的,虽然自己对这方面是比较熟悉的了,但还是耐着性子把第三章的dealing with data 看完了,果然自己还是有所收获的。
      所以我就列一些不正常见的数据类型

    1.union类型

    则还是C++里的共用体,和struct还是有点像的,看看它的定义

    union one4all
    {int a;
    float b;
    double c;
    }
    

    其中one4all 一个变量就能存储3中不同类型的数据,但是最大的和struct的不同就是它的要求是这几种类型必须是同一种家族的数据,比如例子中就是全部都是整型类型的数据。
    而且union这种类型的数据在内存上还是有点特别的,在C++中struct的大小是包含的每个基本数据的总和的大小,但是union确实根据内存占用最大的那个数据为它的大小(例子就是double类型的大小,一般是8个字节),存储其他类型数据的时候,它始终是在这个内存上重新写入的,这也就是为什么union数据一次只能表示一种数据。union适合于非常省内存的场所,不过对于现在电脑越来越大的内存来说,这种数据形式是逐渐淘汰的。


    2.array 模板类型

    C++中array类和vector的区别:vector是可以随机访问的,存储空间并不是连续的,但是array是连续的存储空间,相比于c-style string,array支持通过字符串名直接赋值

    #include<iostream>
    #include<array>
    #include<vector>
    using namespace std;
    int main()
    {
         array<int> arr{1,2,3,4};
         array<int> arr1;
         arr1 = arr;
         char arr2[20];
         char arr3[20] = "helloworld";
         //arr2 = arr3;不正确的
    }
    

    3.enumeration类型

    enum e = {red=2,blue=3,purple=5,green=7};
    int color  = blue;//枚举类型能够自动转换为整型
    // e color  = 4;not valid, compiler can't do that autoatically
    e color = e(4);//this is Ok using a type cast
    //++blue;not valid
    

    枚举枚举类型只定义了赋值号,没有定义其他的运算符,所以++操作是不合法的。

    相关文章

      网友评论

        本文标题:C++内置数据类型

        本文链接:https://www.haomeiwen.com/subject/zllywttx.html