不定时更新实战项目中C、C++学习内容
一、学使用-学校没用过系列
1. typedef:为函数指针类型创建别名
1.1 typedef
typedef 是 C 语言中的一个关键字,用于为已有的数据类型定义新的名称,从而增强代码的可读性和可维护性。typedef 的主要作用是创建类型别名。
以下是 typedef 的一般用法:
-
为基本数据类型创建别名:
typedef int myInt;这行代码将
int类型创建了一个别名myInt。现在可以使用myInt来代替int类型。 -
为结构体创建别名:
typedef struct { int x; int y; } Point;这里创建了一个结构体,并为它创建了别名
Point。现在可以直接使用Point来代替这个结构体的定义。 -
为指针创建别名:
typedef char *String;这行代码将
char *类型创建了一个别名String。现在可以使用String来代替char *类型。 -
为函数指针类型创建别名:
typedef void (*FunctionPointer)(int);这里创建了一个函数指针类型,并为它创建了别名
FunctionPointer。现在可以使用FunctionPointer来代替这个函数指针类型的定义。
typedef 在 C 语言中非常有用,可以简化代码并提高可读性。通过为数据类型创建别名,我们可以使代码更易于理解,并且在需要修改类型时只需修改一处即可,提高了代码的可维护性。
1.2 为函数指针类型创建别名
下面是一个完整的示例,演示如何使用 typedef 为函数指针类型创建别名,并在程序中进行声明、调用和销毁:
#include <stdio.h>
// 定义函数指针类型并为其创建别名
typedef void (*FunctionPointer)(int);
// 示例函数,接受一个函数指针作为参数
void callFunction(FunctionPointer func) {
// 调用传入的函数指针
func(42);
}
// 示例函数,用于打印传入的整数值
void printNumber(int num) {
printf("The number is: %d\n", num);
}
int main() {
// 使用别名的方式声明函数指针变量
FunctionPointer ptr = printNumber;
// 调用函数指针所指向的函数
callFunction(ptr);
return 0;
}
在这个示例中,我们首先使用 typedef 创建了一个名为 FunctionPointer 的函数指针类型别名,该函数指针接受一个 int 参数并没有返回值。然后我们定义了两个函数:callFunction 函数用于接受一个函数指针作为参数并调用该函数指针,printNumber 函数用于打印传入的整数值。
在 main 函数中,我们声明了一个函数指针变量 ptr,并将其初始化为指向 printNumber 函数。然后我们调用 callFunction 函数,并将 ptr 作为参数传入,从而间接调用了 printNumber 函数。
通过这种方式,我们可以看到如何使用 typedef 和函数指针来简化代码并实现函数指针的声明、调用和销毁操作。










