zoukankan      html  css  js  c++  java
  • C++复习6.C/C++高级数据类型

    C/C++高级数据类型

    1.C语言支持把基本数据类型组合起来形成更加强大的构造数据类型,就是C语言的struct(UDT, User Defined Type).

             Struct 和class : 在C++中对C语言的struct进行类改造,使其也可以像C++中的struct那样支持成员函数的声明和定义,从而使struct成为了ADT( Abstract Data Type).在C++中如果不声明访问类型,struct默认的是public,class默认的是private,这也就是在C++中struct和class的唯一区别之处。

             对象是不可以自己包含自己的,因为无法计算sizeof,这样编译的时候出错。但是可以包含对象的引用。利用对象的引用关系,可以生成复杂的数据结构,如tree list。

             类中的成员对其:优化声明属性的顺序是可以减少内存的占用空间。

    2.联合也是一种数据接口,他提供了一种使不同类型数据成员之间共享存储空间的方法,同时可以实现不同类型的数据成员之间自动类型转换。但是与结构不同的是联合对象在同一时间只能够存储一个成员的值,即只有一个数据是活跃的。如果我们同时访问一个联合对象的的多个成员,那么最多有一个值是正确的。

             union KeyCode{ short keyNum; char byteArr[2];} 联合内存的大小取决于其中字节数最多的成员,而不是累加,使用联合不会造成任何额外的运行时开销。用一个成员存入数据,而使用另一个成员访问,指定初始值的时候,只可以制定一个初始值,而且该初始值得类型必须与联合的第一个成员的类型匹配。

             可以取联合变量的地址,也可以是任何一个成员的地址,因为他们是相等的。

    3.枚举 enum

             枚举表示了这种类型的变量的取值范围。当我们定义一个枚举类型的时候,如果不特别的指定标识符的值,将从0一直变大

             enum WEEK { Sun, Mon = 125, Tue, Wed, Thu = 140, Fri,Sat};

             他们的值依次是0,125,126,127,140,141,142 这些值就是WEEK的合法的值。

             如 WEEK week = Sun;

             在标准的C中enum的内存大小是sizeof(int)。但是在标准的C++中,枚举类型的底层表示并非必须是一个int的大小,可以更大或者更小,换句话说就是如果一个枚举变量的取值范围小道足够使用short 或者byte 来表示的话,那么这个枚举变量的底层表示就可能采用short或者byte,相反如果需要比int类型更大的数据类型表示的话,编译器允许使用更大的类型表示枚举变量。

    4.文件

             文件操作是一种 IO操作,IO操作不是C++中的组成部分,他是通过函数库实现的。操作系统甚至把设备也当做文件来看待。

             内存中的任何对象都是可以看成一些字节序列组成的实体,当我们把内存中的对象写入磁盘文件的时候,计算机只是把它们对应在内存空间的值赋值到磁盘文件中;反过来,也是讲磁盘中的ASCII或者二进制数据写入到内存中。

             操作文件是通过流进行操作的,当我们打开一个文件的时候,操作系统建立一个流对象和该文件相关联。操作系统维护了一个保存当前系统中所有打开文件的文件控制块(FCB)的数组,并且利用每一个FCB管理对每一个文件的操作。C语言中一个FILE结构包含了打开文件的描述符,用于检索这个文件控制块数组的下标。

  • 相关阅读:
    vim7.1在windows下的编码设置[转]
    Swashbuckle(6.2.3)【Swagger(3.0)】 第一节
    Git命令集合
    ABP Framework(5.0.0rc) 第一节
    /var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录
    WPF中解决内存泄露的几点提示与解决方法
    用C#读取docx文件
    C#启动单个实例
    WPF学习心得(1):WPF进行动画后不能改变相对应的属性问题的解决
    [转]使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等
  • 原文地址:https://www.cnblogs.com/hbhzsysutengfei/p/3409452.html
Copyright © 2011-2022 走看看