C语言学习笔记-自定义类型

  1. 类型和变量有啥区别?

只能对变量赋值、存取和运算,而不能对一个类型赋值、存取和运算。在编译时,对类型是不分配空间的,只对变量分配空间。

  1. 如果指针p指向一个结构体变量stu,以下3种用法等价:

    • stu.成员名(如stu.num);
    • (*p).成员名(如(*p).num);
    • p -> 成员名(如p -> num);
  2. 什么是共用体类型?

有时想用同一段内存单元存放不同类型的变量。例如,把一个short型变量,一个char型变量,和一个float型变量放在同一个地址开始的内存单元中。以上3个变量在内存中占的字节数不同,但都从同一地址开始存放,也就是使用覆盖技术,后一个数据覆盖了前面的数据。这种使几个不同的变量共享同一段内存的结构,称为“共用体”类型的结构。
定义共用体类型的一般形式为:

union 共用体名{
    成员表列
} 变量表列;

举例来说:

union Data {
    int a;
    char b;
    float c;
} data_1, data_2;

我想到的使用场景是:结构体变量的某个成员属性待定,用上union可以避免重新增加一个成员属性或者重新定义一个结构体类型。

  1. 枚举类型,声明枚举类型的一般形式为:
enum 枚举名 {
    枚举元素列表
} 变量名列表;

举例来说:

enum color {
    red, blue, dark
} my_color, your_color;
  1. typedef#define

#define是在预编译时处理的,它只能作简单的字符串替换,而typedef是在编译阶段处理的

更多的区别:https://blog.csdn.net/xing1314/article/details/2336269

posted @ 2020-04-05 15:43  天之道,利而不害  阅读(250)  评论(0编辑  收藏  举报