10 结构类型
来源:互联网 发布:mysqldump 备份数据库 编辑:程序博客网 时间:2024/06/07 18:19
10 结构类型
1 枚举
- 常量符号化:提高程序可读性
enum color{red, yellow, green};
- 枚举是用户定义的数据类型,关键字enum。但是不好用!枚举类型名字并不真的使用,要用的是大括号里的名字,通常是常量符号,类型是int,值一次从0到n。
- 作为函数参数时需要:void f(enum color c);
- 离散:enum color{red = 1, yellow, green = 5};
- 枚举比宏(macro)好,因为枚举有int类型
2 结构类型
- 结构是复合的数据类型,通常声明在函数外部。
struct date{ int month; int day; int year;}; struct{ int x; int y;} p1, p2; //没有名字的结构struct point{ int x; int y;} p1, p2; //初始化,没有初始化默认为0struct date today = {07, 31, 2014};struct date thismonth = {.month = 7, .year = 2014};
- 结构成员:可以是不同类型,用’.’来访问成员
- 结构运算:数组无法做
p1 = (struct point){5, 10}; //相当于p1.x = 5, p1.y = 10p1 = p2; //相当于p1.x = p2.x, p1.y = p2.y,并且此时修改p1, p2不会变
- 结构指针:和数组不同,结构变量的名字并不是结构变量的地址,必须使用&运算符
struct date *pDate = &today;
3 结构与函数
- 整个结构可以作为参数的值传入函数
- 在函数内部新建一个结构变量,并复制调用者的结构的值
- 也可以返回一个结构
int numberOfDays(struct date d);
- 输入结构:把结构传入函数然后在函数中操作,但是并没有返回回去。问题在于传入函数的是外面那个结构的克隆体,而不是指针。可以通过创建一个临时的结构变量,然后把这个结构返回给调用者。
- 结构指针作为参数
- 指向结构的指针:
struct date{ int month; int day; int year;}myday;struct date *p = &myday;(*p).month = 12;p -> month = 12; //用->表示指针所指的结构变量中的成员
4 结构中的结构
- 结构数组:
struct date dates[2];struct date dates[] = { {11,59,59}, {12,0,0}};
- 结构中的结构:
struct dateAndTime{ struct date sdate; struct time stime;}
如果定义struct rectangle r, *rp; rp = &r; 那么一下四种形式等价:
- r.pt1.x
- rp->pt1.x
- (r.pt1).x
- (rp->pt1).x
结构中的结构的数组:
5 类型定义
- 自定义数据类型:typedef,改善了程序的可读性
typedef int Length; //使Length成为int类型的别名Length a, b;typedef struct ADate{ int month; int day; int year;} Date;Date d = {9, 1, 2005};
6 联合
- sizeof(union) = sizeof(每个成员)的最大值
“`c
union AnElt{
int i;
char c;
}elt1, elt2;
““
- 存储:
- 所有成员共享一个空间
- 同一时间只有一个成员有效
- union的大小是其最大的成员
- 初始化:
- 对第一个成员初始化
0 0
- 10 结构类型
- 结构类型
- 结构类型
- 结构类型
- 结构类型
- 结构类型和枚举类型
- Scala类型 5: 结构类型
- 结构体类型-枚举类型-联合体类型
- 枚举,结构类型
- DELPHI学习---结构类型
- 枚举和结构类型
- C#的结构类型
- 结构体类型问题
- c#结构类型
- C#数据类型-结构类型
- 结构类型用法
- C# Struct 结构类型
- Android MIME类型结构
- 关于编程能力的思考
- web.鼠标.当有滚动条时,物体跟着鼠标移动
- 欢迎使用CSDN-markdown编辑器
- 《人类简史》阅读笔记
- 编译LineageOS
- 10 结构类型
- Max Sum Plus Plus
- JAVA-BigDecimal
- Java内存管理一
- loadrunner使用java 实现MQ协议发收脚本
- java中讲讲BufferedOutputStream的用法,举例?
- Java反射
- TensorFlow笔记之常见七个参数
- Java IO流之文件流