C++ 介绍——自定义数据类型

Posted 叶圣陶杯编程创意大赛组委会

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 介绍——自定义数据类型相关的知识,希望对你有一定的参考价值。

 科技·引领·实践·创新


C++ 介绍(八)——自定义数据类型


1 结构体
结构体可以包含不同数据类型的结构。
定义结构体的一般形式
C++ 介绍(八)——自定义数据类型

 

结构体变量名的定义和初始化:

C++ 介绍(八)——自定义数据类型

 

结构体变量的使用:
  • 具有相同类型的结构体变量可以进行赋值运算,但是不能输入输出

  • 对结构体变量的成员引用:结构体变量名.成员名

  • 指向结构体的指针变量引用格式:指针变量名->成员名;
    结构体数组的定义,初始化和使用与结构体变量、基本类型数组相似


C++ 介绍(八)——自定义数据类型

 

结构体作为函数传递有三种:值传递,引用传递,指针传递


2 结构体大小和字节对齐

现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐.
为什么需要字节对齐?各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据。
  • 自身对齐值:数据类型本身的对齐值,结构体或类的的自身对齐值是其成员中最大的那个值,例如char类型的自身对齐值是1,short类型是2;

  • 指定对齐值:编译器或程序员指定的对齐值,32位单片机的指定对齐值默认是4;

  • 有效对齐值:自身对齐值和指定对齐值中较小的那个。
    字节对齐的三个准则

  • 结构体的总大小为结构体有效对齐值的整数倍。

C++ 介绍(八)——自定义数据类型
C++ 介绍(八)——自定义数据类型

 

3 公用体(union)
  • 成员类型可以是基本数据类型,也可以是构造数据类型。

  • 公用体变量初始化时,只能对第一个成员赋值。

  • 公用体变量所占的内存长度等于最长的成员长度。

  • 公用体变量在一个时刻只能一个成员发挥作用,赋值时,成员之间会互相覆盖,最后一次被赋值的成员起作用。
    定义

C++ 介绍(八)——自定义数据类型

 

初始化

C++ 介绍(八)——自定义数据类型

 

引用

C++ 介绍(八)——自定义数据类型

 

4 枚举(enum)和typedef声明

  枚举已经在前面的章节介绍过,这里就不在赘述了。
  typedef-为已存在的数据类型定义一个新的类型名称,不能定义变量。
  typedef声明格式:typedef 类型名称 类型标识符;



科技·引领·实践·创新

以上是关于C++ 介绍——自定义数据类型的主要内容,如果未能解决你的问题,请参考以下文章

c++自定义类型

C++ 提高教程 STL -Vector存放自定义数据类型

C++数据类型(data type)介绍

C++ - 在自定义数据类型向量中按值匹配和替换元素

OOPC++自定义类型的迭代器

C++ 哈希表 - 如何解决 unordered_map 与自定义数据类型作为键的冲突?