typedef TBase* CreateCB(struct TScene* scene,int x, int y);为什么要typedef,去掉typedef会有什么后果
时间: 2023-08-25 20:50:16 浏览: 123
使用typedef关键字可以为类型创建别名,这样可以简化复杂的类型声明并提高代码的可读性。在这个例子中,typedef用于为函数指针类型CreateCB创建了一个别名。
如果去掉typedef,那么就只剩下函数指针类型的声明,而没有了别名。这样在代码中使用这个函数指针类型时就必须每次都写完整的声明,会显得冗长而不直观。
例如,如果没有typedef,你在代码中使用这个函数指针类型时需要这样声明变量:
```
TBase* (*CreateCB)(struct TScene* scene, int x, int y);
```
而使用了typedef之后,你可以这样声明变量:
```
CreateCB createFunction;
```
总之,typedef关键字可以使代码更加简洁易读,去掉typedef会导致代码冗长并且不方便使用这个函数指针类型。
相关问题
:typedef struct binode huffman; struct binode{ int weight; int data, parent, lchild, rchild; }; typedef struct hnode huffmancode; struct hnode { int cd[maxsize]; int c; }; typedef struct node *lklist; struct node { int adjvex; lklist next; }; typedef struct gnode glink; struct gnode { int vex; struct node *firstlink; };
这段代码定义了四个结构体类型和一个指向结构体类型的指针。它们的具体含义如下:
1. `struct binode` 表示哈夫曼树的结点,包含了权值 `weight`、数据 `data`、父结点 `parent`、左孩子结点 `lchild` 和右孩子结点 `rchild`。
2. `struct hnode` 表示哈夫曼编码,包含了编码数组 `cd` 和编码长度 `c`。
3. `struct node` 表示链表结点,包含了相邻结点的下标 `adjvex` 和下一结点的指针 `next`。
4. `struct gnode` 表示图的顶点,包含了顶点编号 `vex` 和第一个邻接点的指针 `firstlink`。
`typedef` 关键字用来为结构体类型定义别名。比如,`typedef struct binode huffman` 为 `struct binode` 定义了一个别名 `huffman`,这样我们在程序中可以用 `huffman` 来代替 `struct binode`。同理,`typedef struct hnode huffmancode`、`typedef struct node *lklist` 和 `typedef struct gnode glink` 分别为 `struct hnode`、`struct node *` 和 `struct gnode` 定义了别名 `huffmancode`、`lklist` 和 `glink`。
代码分析:typedef struct binode huffman; struct binode{ int weight; int data, parent, lchild, rchild; }; typedef struct hnode huffmancode; struct hnode { int cd[maxsize]; int c; }; typedef struct node *lklist; struct node { int adjvex; lklist next; }; typedef struct gnode glink; struct gnode { int vex; struct node *firstlink; };
这段代码定义了四个结构体类型和一个指向结构体类型的指针。
1. `struct binode` 表示哈夫曼树的结点,包含了权值 `weight`、数据 `data`、父结点 `parent`、左孩子结点 `lchild` 和右孩子结点 `rchild`。
2. `struct hnode` 表示哈夫曼编码,包含了编码数组 `cd` 和编码长度 `c`。
3. `struct node` 表示链表结点,包含了相邻结点的下标 `adjvex` 和下一结点的指针 `next`。
4. `struct gnode` 表示图的顶点,包含了顶点编号 `vex` 和第一个邻接点的指针 `firstlink`。
其中,`typedef` 关键字用来为结构体类型定义别名,方便在程序中使用。`*` 表示指向结构体类型的指针,`maxsize` 是一个宏定义,表示哈夫曼编码的最大长度。
阅读全文