指向函数的指针

目录

typedef

typedef 在 C 语言中用于为类型创建别名,它使得程序员能够用新的名称来表示已有的类型,从而提高代码的可读性和可维护性。以下是 typedef 的几种常见用法:

1.创建类型别名

c 复制代码
typedef unsigned int uint;

在这个例子中,uint 变成了 unsigned int 的别名。

2. 创建结构体类型的别名

c 复制代码
typedef struct {
    int id;
    char name[50];
} Employee;

现在你可以使用 Employee 来声明结构体变量,而不是使用冗长的 struct 关键字。

3. 创建指针类型的别名

c 复制代码
typedef int *IntPtr;

这里,IntPtr 成为了指向 int 的指针的别名。

4. 创建函数指针类型的别名

c 复制代码
typedef int (*FuncPtr)(int, int);

在这个例子中,FuncPtr 是一个可以指向接受两个 int 参数并返回 int 的函数的指针。记住这个例子。

指向函数的指针

指向函数的指针是C语言中一个强大的特性,它允许你创建可以指向不同函数的变量。这在需要根据条件调用不同函数或者实现回调函数时非常有用。

声明函数指针

函数类型声明的一般形式如下:

c 复制代码
return_type (*pointer_name) (argument_list);
  • return_type 是函数返回的类型。
  • pointer_name 是你创建的指针变量的名称。
  • argument_list 是函数接受的参数列表,包括参数的类型和数量。

示例

假设我们有两个简单的函数:

c 复制代码
int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

我们可以按照函数的模样构建一个指向函数的指针。

c 复制代码
typedef int (*operation_func_t)(int, int);

用这个类型来创建一个指向函数的指针:

c 复制代码
operation_func_t operation;

最后就可以通过把函数的地址赋给函数指针,通过指针调用函数了

c 复制代码
// 将 add 函数的地址赋给 operation 指针
operation = add;

// 通过指针调用 add 函数
int result = operation(5, 3); // 返回 8

// 将 subtract 函数的地址赋给 operation 指针
operation = subtract;

// 通过指针调用 subtract 函数
result = operation(5, 3); // 返回 2
相关推荐
Hello:CodeWorld9 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
十月的皮皮11 小时前
C语言学习笔记20260606- 求月份天数三种写法
c语言·笔记·学习
caimouse12 小时前
Reactos 第 5 章 进程与线程 — 5.8 Windows 的 APC 机制
c语言·windows
努力攻坚操作系统14 小时前
编程语言编译运行机制对比:C / Java / Python
java·c语言·python
学会去珍惜15 小时前
C语言简介
c语言·开发语言
凡人叶枫15 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
matlabgoodboy16 小时前
计算机java程序代写python代码编写c/c++代做qt设计php开发matlab
java·c语言·python
caimouse16 小时前
Reactos 第 5 章 进程与线程 — 5.11 线程本地存储 TLS
c语言·windows
格发许可优化管理系统16 小时前
Mentor许可证使用规定全解析
java·大数据·c语言·开发语言·c++
caimouse18 小时前
Reactos 第 5 章 进程与线程 — 5.12 进程挂靠
c语言·windows