typedef
typedef 在 C 语言中用于为类型创建别名,它使得程序员能够用新的名称来表示已有的类型,从而提高代码的可读性和可维护性。以下是 typedef 的几种常见用法:
1.创建类型别名
typedef unsigned int uint;
在这个例子中,uint 变成了 unsigned int 的别名。
2. 创建结构体类型的别名
typedef struct {
int id;
char name[50];
} Employee;
现在你可以使用 Employee 来声明结构体变量,而不是使用冗长的 struct 关键字。
3. 创建指针类型的别名
typedef int *IntPtr;
这里,IntPtr 成为了指向 int 的指针的别名。
4. 创建函数指针类型的别名
typedef int (*FuncPtr)(int, int);
在这个例子中,FuncPtr 是一个可以指向接受两个 int 参数并返回 int 的函数的指针。记住这个例子。
指向函数的指针
指向函数的指针是C语言中一个强大的特性,它允许你创建可以指向不同函数的变量。这在需要根据条件调用不同函数或者实现回调函数时非常有用。
声明函数指针
函数类型声明的一般形式如下:
return_type (*pointer_name) (argument_list);
- return_type 是函数返回的类型。
- pointer_name 是你创建的指针变量的名称。
- argument_list 是函数接受的参数列表,包括参数的类型和数量。
示例
假设我们有两个简单的函数:
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
我们可以按照函数的模样构建一个指向函数的指针。
typedef int (*operation_func_t)(int, int);
用这个类型来创建一个指向函数的指针:
operation_func_t operation;
最后就可以通过把函数的地址赋给函数指针,通过指针调用函数了
// 将 add 函数的地址赋给 operation 指针
operation = add;
// 通过指针调用 add 函数
int result = operation(5, 3); // 返回 8
// 将 subtract 函数的地址赋给 operation 指针
operation = subtract;
// 通过指针调用 subtract 函数
result = operation(5, 3); // 返回 2