指向函数的指针_讨论帖

于喝水 2023-01-10 09:19:00


```c
void print(int num); // 声明函数
void (*funptr)(int) = print; // 声明指向函数的指针, 该函数接受一个int参数, 返回void, 并用print函数的地址初始化

print(10); // (1) 使用函数名调用print函数
(*funptr)(10); // (2) 使用指向函数指针解引调用print函数`
funptr(10); // (3) 使用指向函数指针直接调用print函数

声明 “指向函数的指针” 的指针
指向函数的指针本质上仍然是一种指针, 我们可以按照二级指针声明指向它的指针.
void print(int num); // 声明函数
void (*funptr)(int) = &print; // 声明指向函数的指针
void (**funpptr)(int) = &funptr; // 声明 "指向函数的指针" 的指针
(**funpptr)(10); // 通过二级指针调用print


声明元素类型为 “指向函数的指针” 的数组
同样, 如果具有多个类型一样的指向函数的指针, 我们可以将它们放在一个数组中.
void print(int num); // 声明函数
void (*funptr)(int) = &print; // 声明指向函数的指针
void (*funptrarray[])(int) = funptr; // 声明元素类型为"指向函数的指针"的数组, 数组大小为1, funptrarray[0]用funptr初始化
(*funptrarray[0])(10); // 调用print
(**funptrarray)(10); // 等价的调用print
```

...全文
17 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

15

社区成员

发帖
与我相关
我的任务
社区管理员
  • community_1178
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧