struct/enum/union加typedef与不加typedef

匿名结构体

struct {
int a;
int b;
} v; // 这里表示定义了一个结构体的变量v,且结构体类型没有名字,后续不能再定义结构体,除非又把结构体写一遍。

有名字的结构体

- 直接定义变量
struct struct_type{
int a;
int b;
} v; // 这里表示定义了一个结构体的变量v,且结构体类型的名字为 "struct struct_type"
// 后续要定义结构体变量的时候要使用"struct struct_type"
// 有的编译器使用struct_type定义变量也是可以的,class一样。 struct struct_type b; // 定义结构体变量b
  • 使用typedef命名
typedef struct {
int a;
int b;
} S_TYPE;
// 或者
typedef struct struct_type {
int a;
inb b;
} S_TYPE; // 两种定义方式都可以使用"S_TYPE"定义结构体变量,第二中还可以使用"struct struct_type"或者sturct_type定义结构体变量。
// 使用了typedef就不能在定义类型的时候也声明变量。 S_TYPE v;
  • 特殊的emue,emue中定义的值其实就是define
typedef emue {
RED, BLUE,GREEN //域之间是用“,”分开,不像struct和union是用“;”分开。
} color;
// 等效于
// #define RED 0
// #define BLUE 1
// #define GREEN 2 color c = RED; // 由于域是define的,也就是全局的,可以直接使用
  • 联合union(就是共享空间的结构体,结构体中每个域都分配空间,而联合体中每个域是共享空间的)
typedef union {
int i; // i和f是共享空间的
float f;
} num; num.f = 100; // 给i和f的共享空间赋值了
print("%0d, %0f,", num.i, num.f); // 输出1120403456, 100.0000,整型的值,就是浮点值的二进制对应的值。

c++ struct enum union加typedef与不加typedef的更多相关文章

  1. 【转】结构struct 联合Union和枚举Enum的细节讨论

    结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...

  2. <struct、union、enum>差异

    关于C++和C的区别 区别最大的是struct,C++中的struct几乎和class一样了,可以有成员函数,而C中的struct只能包含成员变量. enum,union没区别. struct的定义 ...

  3. Struct 和 Union 的详细区别

    Union: 共用体 Struct:结构体 两者的区别: 1:共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放一个被选中的成员, 而结构体则存放所有的成员变量. 2: ...

  4. struct与 union的基本用法

    结构体与联合体是C语言的常见数据类型,可对C的基本数据类型进行组合使之能表示复杂的数据结构,意义深远,是优异代码的必备工具.一.        struct与 union的基本用法,在语法上union ...

  5. struct和union

    struct的小秘密 C语言中的struct可以看做变量的集合,struct的问题: 空结构体占用多大内存? 例子1:空结构体的大小 #include<stdio.h> struct ST ...

  6. 关于C中struct和union长度的详解

    这几天看<代码大全>中的第十三章---不常见的数据类型,里面讲解到了C语言中的struct以及对指针的解释,联想到以前看过相关的关于C语言中stuct长度的文章,只是现在有些淡忘了,因此今 ...

  7. new对象时,类名后加括号与不加括号的区别

    [1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...

  8. 【转】C/C++ struct/class/union内存对齐

    原文链接:http://www.cnblogs.com/Miranda-lym/p/5197805.html struct/class/union内存对齐原则有四个: 1).数据成员对齐规则:结构(s ...

  9. C++中创建对象的时候加括号和不加括号的区别

    c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...

随机推荐

  1. 第10组 Beta冲刺 总结

    1.基本情况 组长博客链接:https://www.cnblogs.com/cpandbb/p/14050808.html 答辩总结: ·因为alpha阶段的产品做得偏离了方向,所以beta冲刺大家非 ...

  2. javaScript(笔记1)

    一.JavaScript数据类型: 1.分类: 基本数据类型 & 高级引用数据类型 2.基本数据类型: 数字类型(number), 字符串类型(string), 布尔类型(boolean) 3 ...

  3. 灵雀云入选Gartner 2020中国ICT技术成熟度曲线报告,容器技术处于顶峰

    近日,全球权威咨询分析机构Gartner发布了"2020中国ICT技术成熟度曲线(Hype Cycle for ICT in China, 2020 )"报告,灵雀云作为国内容器和 ...

  4. Keepalived高可用、四层负载均衡

    目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...

  5. kafka学习笔记(七)kafka的状态机模块

    概述 这一篇随笔介绍kafka的状态机模块,Kafka 源码中有很多状态机和管理器,比如之前我们学过的 Controller 通道管理器 ControllerChannelManager.处理 Con ...

  6. [.Net]使用ABP 数据库迁移migration遇到的坑及解决方案

    ​ 问题:在使用Update-Database时,突然出现"数据库中已存在名为 'XXX' 的对象". 检查发现__EFMigrationsHistory表中的MigrationI ...

  7. 微信小程序云开发指南

    一.初识云开发 官方文档 小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建服务器,可 ...

  8. 【发布开源代码】铁威马NAS存储上实现的视频文件浏览

    具体介绍请看:https://github.com/ahfuzhang/tnas_video_web x86机器的windows/linux/mac机器应该都能使用 效果如下: 按月浏览视频 视频太多 ...

  9. 【记录一个问题】ndk下使用c++11的condition_variable问题较多

    1.存在通知丢失的情况:生产者线程通知196次,消费者线程收到190次,导致部分数据无法被处理. 2.cond.wait()方法后的加锁有问题,导致对空队列进行出队操作然后coredump.一直记得w ...

  10. 小程序或者vue,解决菜单导航做做成轮播的样子

    案例: 其中最重要的思路就是如何让第二次或第三次以及后面的轮播有数据: 做法大致跟轮播图做法一样,只不过我们需要进行书写样式,代码如下: <!-- 做一个轮播图navbar demo --> ...