typedef TBase* CreateCB(struct TScene* scene,int x, int y);为什么要typedef,去掉typedef会有什么后果
时间: 2023-08-25 19:50:16 浏览: 79
使用typedef关键字可以为类型创建别名,这样可以简化复杂的类型声明并提高代码的可读性。在这个例子中,typedef用于为函数指针类型CreateCB创建了一个别名。
如果去掉typedef,那么就只剩下函数指针类型的声明,而没有了别名。这样在代码中使用这个函数指针类型时就必须每次都写完整的声明,会显得冗长而不直观。
例如,如果没有typedef,你在代码中使用这个函数指针类型时需要这样声明变量:
```
TBase* (*CreateCB)(struct TScene* scene, int x, int y);
```
而使用了typedef之后,你可以这样声明变量:
```
CreateCB createFunction;
```
总之,typedef关键字可以使代码更加简洁易读,去掉typedef会导致代码冗长并且不方便使用这个函数指针类型。
相关问题
typedef int* sh;sh a,b;中的b是什么类型,为什么
在 `typedef int* sh; sh a, b;` 这个语句中,`b` 是一个 `int*` 类型的变量。
首先,我们来解析 `typedef int* sh;` 这个语句。`typedef` 关键字用于为已有的类型创建一个新的类型名。在这里,`sh` 被定义为 `int*` 类型的新类型名。
接下来,我们继续解析 `sh a, b;` 这个语句。根据前面的定义,`sh` 等价于 `int*`。所以,这个语句可以理解为 `int* a, b;`。
根据 C 语言声明语句的结构是从右向左解析的原则,我们可以逐步分析这个声明语句:
1. 首先,从右向左,`b` 是一个变量,没有任何修饰符,所以它是一个普通的 `int*` 类型的变量,即指向 `int` 类型的指针。
2. 接下来,我们继续往左,`a` 也是一个变量,但是它是由 `sh` 定义的,即 `int*` 类型的变量。
综上所述,在 `typedef int* sh; sh a, b;` 这个语句中,`b` 是一个指向 `int` 类型的指针变量。而 `a` 也是一个指向 `int` 类型的指针变量,因为 `a` 是由 `sh` 定义的,而 `sh` 在这里等价于 `int*`。
typedef (*p)(int ,int );这是什么意思
这是一个函数指针类型的定义。 `typedef (*p)(int, int)` 定义了一个名为 `p` 的函数指针类型,该函数指针可以指向接受两个 `int` 类型参数并返回值为未知类型的函数。
通过这个定义,你可以声明一个函数指针变量并将其指向具有匹配参数和返回类型的函数,以便在运行时通过函数指针来调用函数。