C语言--C语言中的自定义类型

本文详细介绍了C语言中的自定义类型,包括结构体的声明、自引用、内存对齐及传参,位段的声明和内存分配,枚举的定义、使用及其优点,以及联合体的定义、特点和计算。通过这些内容,读者可以深入理解C语言中自定义类型的概念和应用。
摘要由CSDN通过智能技术生成

在C语言中,除了已经定义好的int、char等类型,还支持程序编写者根据自己的需求进行自定义类型,有以下几种:

目录

1.结构体

1.1  结构体的声明

1.2 结构体z的自引用

1.3  变量的定义和初始化

1.4     结构体的内存对齐

1.5  结构体传参

2. 位段

        2.1  位段的声明

2.2  位段的内存分配

3. 枚举

3.1 枚举的定义

3.2  枚举的使用

3.3  枚举的优点

4. 联合体

4.1 定义

4.2 声明

4.3  联合体的计算

 4.4  联合体的特点


1.结构体

        在C语言中,结构是指一些值的集合,这些值称为成员变量,每个变量可以是不同的类型。

1.1  结构体的声明

struct tag
{
    member-list;
}variable;

tag是指结构体的标签,可根据结构体的类型进行自定义;

member-list 即 结构体中的成员列表,每个成员之后用 ; 结束

variable 是 可创建的结构体名称,在此处创建表示该名称的结构体为全局变量

        需要注意的是:最后的分号不能省略!!!

        特别提一点,在C语言中有一种匿名结构体类型,即不写结构体的tag,如:

struct
{
    member-list;
};

                这类结构体虽然可以进行创建,但在使用时较为复杂,通常不推荐使用。

1.2  结构体的自引用

struct Node
{
    int data;
    //struct Node next;        // err  引用结构体本身会造成无限循环,错误的
    struct Node* next;        // 引用同类型的结构体的指针
};

        也可使用如下方式进行自引用

typedef struct Node
{
    int data;
    //struct  Node* node;        //err  在结构体内部不能使用未定义的类型名
    struct  Node* next;
}node;

1.3  变量的定义和初始化

struct S
{
    char c;
    int i;
}s1,s2;        // s1,s2为全局变量

int main()
{
    struct S s3 = {0};        // 此处定义的s3为局部变量
    struct S s4 = {'x', 10};  // 将s4中的c初始化为字符x,将i初始化为10

    return 0;
}

1.4   结构体的内存对齐

        计算机中,程序是从存储设备调用到内存中再进行使用的,对于十分珍贵的内存空间来说,占用的越小,使用效率越高,处理速度也越快。

        结构体的内存对齐有4条特点

        (1) 结构体的第一个成员放在结构体变量在内存中存储位置的0偏移除开始

        (2)从第二个成员往后的所有成员,都放在一个对齐数(成员的大小和默认对齐数的较小值)的整数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值