美文网首页
struct、union和typedef

struct、union和typedef

作者: LittleWizard | 来源:发表于2016-09-18 11:36 被阅读1413次

C里面比较典型的两种数据结构就是struct和union,虽然学习的时候不会经常用,但是了解它们的基本原理对我们的帮助还是很大的

struct

在C语言中,struct其实指的就是structure,也就是结构体。它的出现就是为了便于去描述一个整体,比如一本书,当我们想要囊括它的所有性质(书名,目录,页数,标题等)的时候,最好的做法就是希望能把这些数据组合起来,这就是结构体。
定义一个结构体:



访问结构体内的成员


union

union,也就是联合,它与结构体最大的不同就是它是共用存储空间的,定义和访问基本与结构体一样,这里就不做过多的赘述,主要我们来对比下两者的区别于不同。

difference between struct and union

图中的代码展示的是一个struct和union,其中包括了定义、赋值和输出;我们通过分析结果来获取我们想要对比的内容:



第一点:struct在计算占据内存空间的时候是以4对齐的,因此5+10+4对应的是20字节,而union是共用内存空间,因此选取最大的10对应的是12字节。第二点:赋值的时候,struct是对每一个成员赋值并且互相不影响,输出的时候,值也不会被影响到,而union输出的结果明显不正确,说明每次访问的内存空间都是一样的,后一次的赋值会覆盖前一次的结果。

Bit Fields
typedef

typedef主要是用来给一些数据类型其别名的,比如我们如果要定义一个结构体,一般都需要写如下的代码:struct struct_name xxxx, 显得很长,很麻烦,但是用typedef,比如:typedef struct struct_name FUNC,
然后,FUNC xxxx即可,这样定义多个的时候可以节省很多时间。



另外要说明一点,就是#define与typedef的区别,这两者之间,#define可以定义常量,而typedef必须定义类型,此外,typedef是在编译阶段去处理,而#define则是在预处理阶段处理的。

相关文章

  • struct、union和typedef

    C里面比较典型的两种数据结构就是struct和union,虽然学习的时候不会经常用,但是了解它们的基本原理对我们的...

  • struct和typedef struct彻底明白了

    参看struct和typedef struct彻底明白了 typedef struct和struct的区别: ty...

  • struct和 typedef struct

    1. C语言中 在C中定义一个结构体类型一般使用typedef 2. C++中 3. 引用和指针 这种情况,p与...

  • Struct和typedef struct

    在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }S...

  • struct和typedef struct

    struct和typedef struct 分三块来讲述:1 首先://注意在C和C++里不同在C中定义一个结构体...

  • 结构体、枚举

    //struct 后面那个要不要都行 typedef struct {//typedef struct后面也可以加...

  • struct 和 typedef ?

    // struct person 类型(相当于 int、double等 用来开辟 空间) struct pers...

  • struct和typedef struct区别

    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若str...

  • 一天一个C++小知识

    1.struct、enum、union三个关键字在C中定义比较麻烦,所以一般和typedef一块出现,而C++中则...

  • 跳跃表节点

    typedef struct zskiplistNode {struct zskiplistLevel {stru...

网友评论

      本文标题:struct、union和typedef

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