指向函数的指针

目录

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
相关推荐
dtq04244 小时前
数据结构 - 线性表 - 双向链表
c语言·数据结构·学习
不正经学生8 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技8 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
xiaobobo333012 小时前
c语言中for循环条件中定义临时栈变量的作用域
c语言·for循环条件定义栈变量·大括号作用域·独立栈变量
惜离殇13 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
潘潘的嵌入式日记14 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
xx~t16 小时前
嵌入式——Linux软件编程——网络1
linux·c语言·网络·vscode·网络协议
羚尔19 小时前
C语言数组
c语言·开发语言
老当益壮梁奶奶1 天前
Linux软件编程学习笔记(十一):深入浅出 TCP 协议与 Socket 编程实践
linux·c语言·笔记·学习·tcp/ip
Navigator_Z1 天前
LeetCode //C - 1223. Dice Roll Simulation
c语言·算法·leetcode