C语言程序设计:自定义数据类型详解

版权申诉
0 下载量 181 浏览量 更新于2024-07-04 收藏 3.25MB PPT 举报
"这份讲义主要讲解了C语言中的用户自定义数据类型,包括结构体、结构体数组、指向结构体的指针、链表、共用体和枚举类型,以及typedef的使用。" 在C语言中,用户可以通过结构体(struct)来创建自定义的数据类型,以满足对复杂数据组织的需求。结构体可以包含不同类型的成员,如整型、字符型、浮点型等。结构体类型的定义允许程序员将多个相关的变量组合在一起,形成一个新的复合数据类型。 1. 结构体类型的定义:通过`struct`关键字定义结构体类型,并指定其成员。例如,可以定义一个包含姓名、年龄和性别的人员信息结构体。 2. 定义结构体变量的方法:可以先声明结构体类型,然后定义变量;也可以同时声明类型并定义变量;直接定义结构体类型变量;结构体的成员还可以是另一个结构体,实现嵌套结构。 3. 结构体变量的引用:结构体作为一个整体不可直接操作,只能通过点运算符`.`来访问其成员。例如,`a.num`表示访问结构体变量`a`的`num`成员。 4. 结构体变量的初始化:结构体可以在定义时进行初始化,通过花括号{}指定每个成员的初始值。 5. 结构体数组:可以定义结构体类型的数组,数组中的每个元素都是一个结构体实例。 6. 指向结构体类型的指针:指针可以指向结构体变量,这样可以通过指针操作结构体的成员。结构体数组的指针可以用于遍历数组。 7. 链表处理:链表是一种动态数据结构,通过指针连接各个节点。可以用指针创建、输出、删除链表。静态链表在定义时分配空间,而动态链表在运行时根据需要分配空间。 8. 共用体(union)类型:共用体内的所有成员共享同一块内存空间,任一时刻只能存储其中一个成员的值。共用体变量不能初始化,也不能作为函数参数。 9. 枚举类型(enum):枚举类型提供了一种为整数常量命名的方式。枚举变量不能直接输入输出,需要转换为对应的整数值。 10. `typedef`定义类型:可以使用`typedef`为已存在的类型创建别名,使得代码更具可读性。例如,`typedef union {...} MYTYPE;`定义了一个名为`MYTYPE`的新类型。 题目解析: 1. 对于`MYTYPE them;`的大小,由于`MYTYPE`是一个联合体,它将占用最大成员的大小,即`double`的8字节,因此输出是8,选择C。 2. 结构体`a`包含一个`int`,一个`char[8]`和一个联合体`data`。`data`中最大的成员是`double`,占8字节,但因为它是联合体,结构体`a`的大小将是`int`的4字节加上`char[8]`的8字节,总计12字节,因此答案是C。 3. 要引用`pup`中的`bb`域,应使用`pup.bb.i`,`pup.bb.ch`或`pup.bb.j`,具体取决于希望访问的成员。 这些知识点是C语言编程中的基础,理解和掌握它们对于编写复杂的C程序至关重要。