函数指针 、指针函数、回调函数应用举例

18 篇文章 0 订阅

目录

 

0.首先有几点是必须要知道的

1.函数指针

2.指针函数

3.回调函数 (其实就回调函数是函数指针的一种用法)

应用举例:

结果演示:


0.首先有几点是必须要知道的

1.[]与变量结合的优先级高于*、*优先和声明类型结合(在没有括号的情况下)

2.理清楚复杂短句,找到“本质”

3.时刻牢记指针就是地址

中文语言的特性:形容词在前,名词在后

故而:函数指针:本质就是指针:指向函数的指针

           指针函数:本质就是函数:本质是一个函数,而该函数的返回值是一个指针

           数组指针:本质就是指针:指向数组的指针(详解见:https://blog.csdn.net/Wmll1234567/article/details/87642973

           指针数组:本质就是数组:数组里的每个元素是指针类型

普通函数声明:

int fun(int x,int y);

普通指针: 

int * p;

//这里定义了一个指向整型的指针变量,普通普通在他指向的很“普通”,我觉得那也可以仿照函数指针成为整型指针

//但一定记住,整型指针不要以后记着记着就成了类型为整型的指针;这里的整形指的是他指向对象的类型

1.函数指针

int (* fun)(int x,int y); 

 //这里*和fun 结合;说明这是一个指针,不过这个指针指向一个函数(指针里实际存放的是函数入口地址)

2.指针函数

int * fun(int x,int y);   

//这里*和int 结合;说明返回值是一个指针

3.回调函数 其实就回调函数是函数指针的一种用法

      为什么要存在函数指针、指针函数这么拗口的东西呢?,他们都用在什么场景呢?

  •                指针函数

       普通函数只能返回一个值,那有时候希望返回一个数组呢?这时候需要指针函数返回数组首地址即可啦 

  •                 函数指针

       希望函数作为一个参数传进一个函数里时,就需要函数指针了,因为要传入的是这个函数的入口地址

       很多时候,我们都需要调用一个函数,触发另外一个函数(称为回调函数),这时调用函数参数就得定义为函数指针

应用举例: 

//ide:vs
#include<stdio.h>
#include<string.h>
#include <stdlib.h>//system头文件
#include <windows.h>


typedef void (*callback_my)(int event_num);

void callback0(int event_num)
{
	switch(event_num)
	{
	case 0:
		printf("你好傻\n");
		break;
	case 1:
		printf("你好笨\n");
		break;
	case 2:
		printf("你好聪明\n");
		break;
	case 3:
		printf("你好漂亮\n");
		break;
    default :
		printf("你好丑\n");
		break;

	}
}

int setup(callback_my cb)
{
	int i;
	while(1)
	{
		scanf("%d",&i);
		cb(i);
	}
}

int main()
{	
	setup(callback0);
	system("pause");
	return 0;
}

结果演示:

        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值