C语言学习笔记-自定义类型
- 类型和变量有啥区别?
只能对变量赋值、存取和运算,而不能对一个类型赋值、存取和运算。在编译时,对类型是不分配空间的,只对变量分配空间。
-
如果指针
p
指向一个结构体变量stu,以下3种用法等价:- stu.成员名(如
stu.num
); - (*p).成员名(如
(*p).num
); - p -> 成员名(如
p -> num
);
- stu.成员名(如
-
什么是共用体类型?
有时想用同一段内存单元存放不同类型的变量。例如,把一个short
型变量,一个char
型变量,和一个float
型变量放在同一个地址开始的内存单元中。以上3个变量在内存中占的字节数不同,但都从同一地址开始存放,也就是使用覆盖技术,后一个数据覆盖了前面的数据。这种使几个不同的变量共享同一段内存的结构,称为“共用体”类型的结构。
定义共用体类型的一般形式为:
union 共用体名{
成员表列
} 变量表列;
举例来说:
union Data {
int a;
char b;
float c;
} data_1, data_2;
我想到的使用场景是:结构体变量的某个成员属性待定,用上union
可以避免重新增加一个成员属性或者重新定义一个结构体类型。
- 枚举类型,声明枚举类型的一般形式为:
enum 枚举名 {
枚举元素列表
} 变量名列表;
举例来说:
enum color {
red, blue, dark
} my_color, your_color;
typedef
和#define
#define
是在预编译时处理的,它只能作简单的字符串替换,而typedef
是在编译阶段处理的
更多的区别:https://blog.csdn.net/xing1314/article/details/2336269