1自定义数据类型
Posted aaakihi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1自定义数据类型相关的知识,希望对你有一定的参考价值。
1、结构体:存放一组不同类型的数据
- 结构体的定义
struct student int num;
float MathScore; float EnlishScore; stu1;也可以用typedef来定义
typedef struct student int num;
float MathScore; float EnlishScore; stu; - 也可以定义结构体数组和指针
struct student int num; float MathScore; float EnlishScore; stu1,*stu2,stu3[10];
- 结构体的使用
- 普通的结构体变量
stu1 = 1,66,88 ; printf("%d\n", stu1.num); printf("%f\n", stu1.MathScore); printf("%f\n", stu1.EnlishScore);
- 结构体指针变量
#include <stdio.h> struct student int num; float MathScore; float EnlishScore; ; int main() student stu1; stu1 = 12, 66.6,76.5 ; student *pstu = &stu1; printf("学号是%d,今年的数学成绩是%.1f,今年的英语成绩是%lf!\n", (*pstu).num, (*pstu).MathScore, (*pstu).EnlishScore); printf("学号是%d,今年的数学成绩是%.1f, 今年的英语成绩是%lf!\n", pstu->num, pstu->MathScore, pstu->EnlishScore); return 0;
- 普通的结构体变量
- 结构体的初始化
stu1 = 12, 66.6,76.5 ;
stus[] = "Zhou ping", 5, 18, ‘C‘, 145.0, "Zhang ping", 4, 19, ‘A‘, 130.5, "Liu fang", 1, 18, ‘A‘, 148.5, "Cheng ling", 2, 17, ‘F‘, 139.0, "Wang ming", 3, 17, ‘B‘, 144.5 ;
2、枚举类型:C语言提供了一种枚举(Enum)类型,能够列出所有可能的取值
-
枚举类型的定义
enum typeName valueName1, valueName2, valueName3, ...... ;
enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;
typeName
是枚举类型的名字;valueName1, valueName2, valueName3, ......
是每个值对应的名字的列表。 - 枚举类型的初始化
enum week Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 ;//依次对week成员赋值;
enum week a, b, c;//如何没有直接赋值,则从第一个成员为0,后面的成员依次增加;
enum week a, b=5, c;//前面不变,b=5,后面依次增加;
- 枚举类型的使用
#include <stdio.h> #include <stdlib.h> typedef enum weekday mon, tue, wen, tur, fri, sat, sun Weekday; Weekday test_enum() Weekday Today = mon; return Today; int main() printf("%d\n", test_enum()); //输出0; return 0;
3、共用体
- 定义共用体并创建变量
union data int n; char ch; double f; a, b, c;
- 与结构体一样,共用体也是存放不同数据类型的变量
- 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
- 结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
以上是关于1自定义数据类型的主要内容,如果未能解决你的问题,请参考以下文章