C语言
复杂数据类型
共用体(Union)
也称为联合体,由多个数据成员构成,但这些数据成员共享同一段内存空间。
对某个数据成员赋值会覆盖其他数据成员,在某一时刻起作用的只有某一个数据成员(最近被赋值的那个数据成员)。
共用体的大小为其最长的数据成员所占内存空间大小。
共用体在实际开发中用的并不多,可以用于轻松分离一个多字节数据的每个字节,用于判断当前系统的存储模式等场景。
一般用的是小端存储模式(高字节高地址)
51单片机用的大端存储模式(高字节低地址)
验证存储模式方法:
union{
short s;
char c;
}t;
t.s = 1;
if(t.c)
printf("当前系统为小端存储模式\n");
else
printf("当前系统为大端存储模式\n");
枚举(Enum)
表示只有有限种不同取值的数据,比如性别,星期等。
和结构体、共用体一样,都是自定义数据类型,必须先声明再使用。
枚举元素:本质就是int类型常量,默认从0开始。同一个作用域范围内的不同枚举类型中的枚举元素不能同名。
I/O
input/output,输入/输出
程序 = 输入 + 处理 + 输出
分为三类:
- 标准I/O:Standard I/O,从标准设备(比如键盘等)上读取数据。将数据传送到标准输出设备(比如显示器屏幕等)
- 文件I/O:File I/O,从文件中读取数据,将数据写入到文件中。
- 串I/O:String I/O,从某个字符串中读取数据,将数据写入到某个字符缓冲区(Buffer)中。
通过调用和I/O相关的标准库函数实现。
标准I/O相关的函数:scanf,getchar,gets,printf,putchar,puts
内存溢出(Memory Overflow)