玩具侠-C语言学习之函数指针(2)

回顾:上一节对程序的运行过程及内存的数据存储进行了简单的一个学习了解,大致有了一定的概念,整个过程的理解还需要后面慢慢了解深入。


今天记录下函数指针的学习,

1、函数指针

2、指针函数





1、函数指针简单点说就是函数的指针,或者可以理解是函数的编号,通过这个指针编号就可以直接调用这个函数,函数指针的定义格式如:

int  (*myint)(int a,int b),返回类型 (*自己定义的函数指针名)(函数参数个数),这样就定义好了一个函数指针。

2、指针函数:说的详细点就是返回类型是指针的函数,与返回值是整形或是char的函数一样,更深一层的理解既然返回的是指针,那么这个指针也可以是函数指针,所以也可以理解为指针函数是返回类型为函数指针的函数。

下面看代码实例:


#include "stdafx.h"

int (*mfun)(int,int); //定义函数指针
int *zhFun(int a,int b);//定义指针函数
int glFun(int a,int b);//定义函数

int main(int argc, char* argv[]) //int argc 表示命令行参数的个数,char* argv[] 表示具体参数字符串内容,是一个数组指针。

{
	//int gl = glFun(3,4);
	//mfun = glFun;
	mfun = &glFun; //也可直接glFun赋值,函数名本身就是指针
	int gl = (*mfun)(3,4);//函数指针 也可以不要*为了区别一般都加上*号
	int zh =  *zhFun(3,4);//指针函数
        printf("%d\n",gl);//12
	printf("%d\n",*zh)//12
  	return 0;
}
int glFun(int a,int b){
 int ab = a*b; return ab;
 }
int* zhFun(int a,int b){
 int mm = a*b; return &mm;
}


 

上面代码说明了一个函数指针,和指针函数的简单用法,为加深理解,下面在扩张一下,说一下

指针函数返回类型是函数指针的用法,

#include "stdafx.h"

typedef int (*CDFun)(int,int); //定义函数指针别名为CDFun,类似它就是自己定义的个新的函数指针类型
CDFun  mfun;            //定义函数指针
int *zhFun(int a,int b);//定义指针函数
int glFun(int a,int b);//定义函数
CDFun fhuiFun(int cs);//声明返回值是函数指针

int main(int argc, char* argv[])
{
 
 	mfun = &glFun; //也可直接glFun赋值,函数名本身就是指针
 	int gl = (*mfun)(3,4);//函数指针
 	int zh =  *zhFun(3,4);//指针函数
    
    CDFun fh = fhuiFun(0);
    int mm = (*fh)(3,4);

         printf("%d\n",gl);//12
 	printf("%d\n", zh);//12
 	printf("%d\n", mm);//12

	return 0;
}


CDFun fhuiFun(int cs){
    if(cs == 0) {
	    return &glFun; //返回函数指针 也可以直接就是函数名glFun
	}
}

int glFun(int a,int b){
  int ab = a*b;
  return ab;  
}

int* zhFun(int a,int b){
    int mm = a*b;
	return &mm;
}

上面 fhuiFun指针函数,就是一个返回值是“函数指针”的指针函数,上面的注释比较清楚,相信各位都可以理解,有问题请留言
另外做个广告啊,支持下我的淘宝玩具店哦:https://shop65858016.taobao.com/index.htm



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值