美文网首页
C语言中如何将函数作为参数传递给别的函数

C语言中如何将函数作为参数传递给别的函数

作者: 王伯卿 | 来源:发表于2018-05-14 21:59 被阅读0次

我们先写一个简单的求和函数,该函数接受两个整型,返回两个数的和。

#include <stdio.h>

int add(int a,int b);

int main(void){
  int result = add(1,2);
  printf("%d\n",result);
  return 0;
}

int add(int a,int b){
  return a+b;
}

现在我们把我们写好的add函数作为参数传给另一个函数。这里我们需要声明一个指向函数的指针,才可以完成这样的操作。

#include <stdio.h>

int add(int a,int b);
// add_2接受三个参数,第一个是一个整型,第一个也是一个整型,第三个是一个指向函数的指针
// 这个指针所指向的函数接受两个参数,都是int
int add_2(int a, int b, int(*ptr)(int a,int b));

int main(void){

  int result = add_2(1,2,add);
  printf("%d\n",result);
  return 0;

}

int add(int a,int b){
  return a+b;
}
int add_2(int a, int b, int(*ptr)(int a,int b)){
  int result;
  return result = ptr(a,b);
}

函数指针和指针函数两个是完全不一样的,但是这样的命名实在令人讨厌,其实这并不有多难分辨。反之永远不要这么命名。宁愿多说几个字。
比如指向函数的指针,或者一个返回类型为指针的函数。看下面这两句完全是不一样的。

int *func(int a, int b) ; //这个声明的是一个函数
int (*func)(int a, int b); //这个声明的是一个指针变量

就像注释里写的一个,声明一个函数,需要在后面补充,但是声明一个变量就不用了。
突然想到了js的函数式编程,指向函数的指针做参数,好像颇有函数式编程的味道。

相关文章

  • C语言中如何将函数作为参数传递给别的函数

    我们先写一个简单的求和函数,该函数接受两个整型,返回两个数的和。 现在我们把我们写好的add函数作为参数传给另一个...

  • 高阶函数

    ​ 在函数式语言中,函数就是数据,函数可以赋值给变量(匿名函数),可以当做参数传递给其他函数,还可以作为返回值...

  • Sizeof on array function paramet

    在C语言中,数组作为函数参数时将退化为指针。

  • 如何写一个回调?

    在本文中,我们将介绍在c、java这三种编程语言中如何在把函数作为一个参数传入另一个函数中,以及分析这些语言函数传...

  • vector 作为函数参数

    参考 C++(笔记)容器(vector)作为函数参数如何传参 vector作为参数的三种传参方式

  • [ Swift 进阶]之 函数函数的灵活性 读书笔记

    Objective-C VSSwift的排序方式。 学习目的:如何将函数作为参数使用,并且将函数当作数据,以完全类...

  • 深入函数参数

    函数参数 Python允许具有可变长参数的函数。使用*args作为函数参数,可以将任意数量的参数传递给该参数。然后...

  • C#委托

    在C和C++中,只能提取函数的地址,并作为一个参数传递它。C没有类型安全性。可以把任何函数传递给需要函数指针的方法...

  • 你不知道的JS(中卷)第六章

    第六章 异步:现在与将来 回调函数:定义:作为参数传递给别的代码段(函数、对象)的函数,在那个函数执行完后再执行。...

  • 引用

    引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的...

网友评论

      本文标题:C语言中如何将函数作为参数传递给别的函数

      本文链接:https://www.haomeiwen.com/subject/xacsdftx.html