不定时更新实战项目中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
和函数指针来简化代码并实现函数指针的声明、调用和销毁操作。