博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 函数指针
阅读量:4986 次
发布时间:2019-06-12

本文共 1318 字,大约阅读时间需要 4 分钟。

以下内容参考C++ Primer Plus第六版

有了这个东西估计很多操作会方便很多.

int* sort_2(int *begin, int *end) {    sort(begin, end);    return begin;}int* sort_1(int *begin, int *end) {    sort(begin, end, greater
() ); return begin;}int make_seq(int* (*f)(int*, int*), int *n, size_t len) { int first = *((*f)(n, n + len)); for (int* i = n; i != n + len; i += 1) printf("%d ", *i); puts(""); return first;}int main () { int A[5] = {0, 3, 2, 5, 1}; auto f1 = sort_1, f2 = sort_2; printf("%d\n", make_seq(f1, A, 5)); printf("%d\n", make_seq(f2, A, 5)); return 0;}

一个比较简单的例子, 大概是包含了函数指针基本的使用吧.

声明及赋值

声明一个返回值为const int*参数为(int *, int *)标示符为f的函数指针

const int* (*f)(int *, int *)

当然赋值时可以这样做:

const int* func(int * a, int *b) { // 一个函数}const int* (*f)(int *, int *) = func;

当然可以使用c++11的自动类型推断

上面代码的最后一句改为

auto f = func;

调用

在一个函数中使用它

int func(const int *(*f) (int *, int *), int *begin, int *end) {    f(begin, end); //或者    (*f)(begin, end);}

虽然根据我们对指针的认识, 下面的那个代码应该是正确的才对, 但是C++标准都允许.

显然是上面的方式更好写一些.
1119251-20181023203536871-1246632278.png

函数指针数组

其实和普通的指针数组差不多

auto f1 = sort_1, f2 = sort_2;    int* (*f[2])(int *, int *) = {sort_1, sort_2};    printf("%d\n", make_seq(f[0], A, 5));    printf("%d\n", make_seq(f[1], A, 5));

typedef进行简化

typedef const int *(*func)(int *, int *);func a, b, c[3];

转载于:https://www.cnblogs.com/qdscwyy/p/9839502.html

你可能感兴趣的文章
union和struct的区别之处,在于内存的共享上
查看>>
jQuery相关知识点1
查看>>
python反射
查看>>
USACO 2017 February Gold
查看>>
XML DOM解析 基础概念
查看>>
jQuery取得select选择的文本与值
查看>>
Android入门系列002----普通控件使用
查看>>
YARN框架详解
查看>>
topshelf windows服务
查看>>
Mac OS X下重启apache
查看>>
Unity3D中Animator动画控制器组件的相关使用
查看>>
Mayan游戏
查看>>
The New Jordans 2013 released a comeback
查看>>
SQL实战(四)
查看>>
LEETCODE —— Unique Binary Search Trees [动态规划]
查看>>
栈溢出利用
查看>>
JS核心知识点:DOM\BOM\EVENT
查看>>
嵌入式软件设计第8次试验
查看>>
Datenstruktur und Algorithmus
查看>>
DLL劫持技术详解(lpk.dll)
查看>>