c语言函数指针和指针函数的区别,以及回调函数的使用。

简介: c语言函数指针和指针函数的区别,以及回调函数的使用。

函数指针是什么,函数指针本质也是指针,不过是指向函数的指针,存储的是函数的地址。

指针函数是什么,指针函数其实就是返回值是指针的函数,本质是函数。

函数指针是如何定义的呢,如下

void (*pfun)(int a,int b)

这里 * pfun 需要加括号,否则定义为了指针函数。

指针函数的定义如下:

void *pfun(int a,int b);

下面利用函数指针实现回调函数

首先我们利用结构体存储一个函数指针类型

typedef struct
{
  void (*p)(int,int);
}p_fun;

这个函数指针是指向一个 返回值是void ,二个参数都是int 类型的函数。下面我们定义一个此类型的函数。

void  printf_fun(int a,int b)
{
  printf("%d,%d",a,b);
}

我们此时可以写一个回调函数,如下:

void callback(int a,int b,void(*p_test)(int,int))
{
  
    p_test(a,b);
    
}

最后我们在main函数中调用

int main(void )
{ 
  p_fun  para;//定义出结构体变量
  para.p=printf_fun; // 函数指针指向函数。函数名就是地址
  
  callback(3,5,para.p);//调用回调函数。
//注意:本质上传递的都是地址。所以传递的时候并不能传递参数,
 
}

运行结果:

你们看懂了吗?没看懂多看几遍!!!

目录
相关文章
|
1天前
|
存储 前端开发 算法
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(下)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
5 0
|
1天前
|
存储 C语言
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(中)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
8 0
|
1天前
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
12 0
|
1天前
|
C语言 容器
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(下 )
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
5 1
|
1天前
|
C语言 计算机视觉
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(中)
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
9 1
|
1天前
|
存储 算法 编译器
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(上)
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
8 1
|
1天前
|
C语言
C语言进阶:进阶指针(下)
C语言进阶:进阶指针(下)
|
1天前
|
C语言
C语言进阶:指针的进阶(上)
C语言进阶:指针的进阶(上)
|
2天前
|
存储 程序员 编译器
【初阶】C语言指针详解——指针必备的7大知识点
【初阶】C语言指针详解——指针必备的7大知识点
|
2天前
|
存储 C语言
C语言-指针详解速成
C语言-指针详解速成

热门文章

最新文章