•结构是用户定义的类型,而结构的声明定义了这种类型的数据属性。

  一.关键字struct声明:   定义了一种新类型

    struct inflatable{

      char name[20];//结构成员

      float volume;//结构成员

      double price;//结构成员

    } 

  定义结构之后,便可以创建这种类型的变量。如  inflatable a; inflatable b;inflatable c;由于a的类型为inflatable,因此可以使用成员运算符(.),即a.volume (访问类成员,直接用.)

         结构数组:

    inflatable结构包含一个数组,

       E  G:inflatable gifts[100];//若创建包含100个inflatable结构的数组.

          cin>>gift[0].volume;

    初始化:

       inflatable guests[2]={

          {"LELE",0.5,21.99},

          {"HAHA",2000,565.99}

       };

    二.共用体

    共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。结构可以同时存储int long double,共用体只能存储int,long,double。共用体的句法和结构相似,但含义不同。 one4all是创建的类型

    声明:  union one4all{ 

          int int_val;

          long long_val;

          double double_val;

        }

    可以使用one4all变量来存储int ,long 或double,条件是在不同的时间进行:

    one4all pail;

    pail.int_val=15;

    cout<<pail.int_val;

    pail.double_val=1.38

    cout<<pail.double_val;

    pail有时可以是int变量,有时可以是double变量。成员名称标识了变量的容量。由于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。

    共用体用途之一:当数据项不用同时使用两种或者更多的时候,可节省空间。假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些的ID为字符串。

  1. struct widget{
  2. char brand[];
  3. int type;
  4. union id{
  5. long id_num;
  6. char id_char[];
  7. }name;
  8. };
  9. widget prize;
  10. if(prize.type==){
  11. cin>>prize.name.id_num;
  12. }else
  13. cin>>prize.name.id_char;

    匿名共用体:没有名称,其成员将成为位于相同地址处的变量。

  1. struct widget{
  2. char brand[];
  3. int type;
  4. union {
  5. long id_num;
  6. char id_char[];
  7. };
  8. };
  9. widget prize;
  10. if(prize.type==){
  11. cin>>prize.id_num
  12. }else
  13. cin>>prize.id_char;

    三.枚举 创建符号常量,可代替const,允许定义新类型。

    enum eg{red,orange,yellow,green,blue,violet,indigo};

    •让eg成为新类型的名称:eg被成为枚举,就如struct变量被称为就够一样。

    •将red,orange,yellow等作为符号常量,对应值为0~6,这些常量被成为枚举量。

    也可以用枚举名来声明这种类型的变量

    eg band;

    band=blue;

    band=2000;//错误的,2000不是枚举数,2000不是枚举变量的值。

    

C++复合类型(结构,共用体,枚举)的更多相关文章

  1. C++ 共用体 枚举类型 所有

    一.共用体类型 1.共用体的概念. 有时候需要将几种不同类型的变量存放到同一段内存单元中.例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放.也就是用了覆盖技术,几个变量互相覆盖.这种使几个 ...

  2. C语言基础 (11) 结构体 ,共用体 枚举 typedef

    1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...

  3. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  4. 5、数组&字符串&结构体&共用体&枚举

    程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...

  5. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  6. 07.C语言:结构体、共用体、枚举

    一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...

  7. c的详细学习(10)结构体与共用体的学习(二)

    在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而 ...

  8. C语言结构体和共用体_07

    概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型  概述 定义一个结构体的一般形 ...

  9. C/C++(共用体与枚举)

    共用(Union)与枚举(Enum) 共同体 c语言中,不同的成员使用共同的存储区域的数据结构类型称为共用体.(共用,联合体),共用体在定义,说明,适用形式上与结构体相似.两者本质上的不同在于使用内存 ...

随机推荐

  1. 微信小程序获取手机信息

    wx.getSystemInfo({ success: function (res) { console.log(res.model)//手机型号 console.log(res.pixelRatio ...

  2. 关于content-type请求头的说明

    Content-Type请求头的作用,用于标记请求体数据的格式,如: 1. Content-Type:application/x-www-form-urlencoded 请求体:b'pwd=123&a ...

  3. Django全面讲解(2/2)

    前戏 Django是Python语言编写的一个全栈式Web框架(其他的还有Tornado,Flask),可帮助我们快速编写一个具有数据库功能,增删改查.后台管理等功能的网站,若不考虑很高的执行速度,去 ...

  4. [Medium翻译]RESTful API权威设计指南-设计更好的API

    本文为授权译文.希望查看原文的同学请戳链接:https://hackernoon.com/restful-api-design-step-by-step-guide-2f2c9f9fcdbf 对于我们 ...

  5. Oracle中case的第二种用法

    procedure P_GetProVerSingInfo_2018(varFileID in varchar2, p_cr1 out refcontent, p_cr2 out refcontent ...

  6. nopCommerce电子商务平台 安装教程(图文)

    nopCommerce是一个通用的电子商务平台,适合每个商家的需要:它强大的企业和小型企业网站遍布世界各地的公司销售实体和数字商品.nopCommerce是一个透明且结构良好的解决方案,它结合了开源和 ...

  7. JFinal DB.tx()事务回滚及lambda表达式应用

    JFinal DB.tx()事务回滚 在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用 写法: Db.tx(new IAtom(){ @Override public bo ...

  8. Python入门(案例)

    Python入门(案例) #一.上课案例: #输出hello wordprint('hello word') #python注释有两种#1.单行注释#这是单行注释#2.多行注释'''这是多行注释''' ...

  9. Java并发之synchronized使用

    synchronized,是Java语言的关键字,读['siŋkrənaizd],当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.Java为何要使用sy ...

  10. Robots协议(摘)

    robots协议 Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓 ...