先看函数指针
int func2(int x);    /* 声明一个函数 */
int (*q2) (int x);   /* 声明一个函数指针 */
q2=func2;        /* 将func函数的首地址赋给指针f */
int c=(*q2)(3);   //3可以为任意实参
 
上面4句基本说明了函数指针的用法:
函数指针是指向函数的指针,确切的说,是指向特定类型函数的指针(函数与函数指针 类型要匹配)
函数指针用来保存函数首地址,即可以通过该指针访问函数。函数指针相当于取别名
函数指针可以指向一类函数,而不是一个函数,即可以重新赋值。(见例2)
 
函数指针不难,只要记住上面黑体字就差不多了,附上两个简单的例子
例1:
#include<stdio.h>
int max(int x,int y){ return(x>y?x:y); }
void main()
{
int (*ptr)(int, int);
int a,b,c;
ptr=max;
scanf("%d%d",&a,&b);
c=(*ptr)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
}

例2:

#include<stdio.h>
void FileFunc()
{
printf("FileFunc\n");
}
void EditFunc()
{
printf("EditFunc\n");
}
void main()
{
typedef void (*funcp)();
funcp pfun= FileFunc;
pfun();
pfun = EditFunc;
pfun();
}
再看指针函数:
int *func(int x);/* 声明一个指针函数 */
int *q; /* 声明一个指针 */
q=func(3);//3可以为任意实参
 
上面三句基本说明了指针函数:
指针函数是返回值为指针的函数,所以我们在main()中调用它时可以用一个同类型的指针来接收。
指针函数可以用来解决众多问题,如返回多个值的问题。(见"函数返回多个值的方法"那篇文章)
指针函数比经常更经常用到,一定要学会用
 
指针函数逻辑简单,结构清新,功能强大,质量好,效率高,堪比极品中的凤姐,胜过。。。(求下联),反正不学会真是损失。
 
例3也是百度来的,个人觉得很经典,涉及到了指针,数组指针,指针函数,二维数组的赋值,函数返回多个值,数组指针的自增与指针自增的区别。。。众多知识。看懂这个基本指针这一块差不多了。
 
例3:
#include<iostream>
using namespace std;
int main()
{
float *find(float (*p)[],int m);//查询序号为m的学生的四门课程的成绩
float score[][]={{,,,},{,,,},{,,,}};//定义成绩数组,第一维可以为变量
float *pf=NULL;//定义一个指针时一定要初始化
int i,m; //cout<<"请输入您想查询的学生的序号:"; cin>>m;
pf=find(score,m);//返回为一维数组指针,指向一个学生成绩
for(i=;i<;i++)
cout<<*(pf+i)<<" ";
cout<<endl;
return ;
}
float *find(float (*p)[],int m)
{
float *pf=NULL;
pf=*(p+m);//p是指向二维数组的指针,加*取一维数组的指针
return pf;
}

pf=*(p+m);//p是指向二维数组的指针,加*取一维数组的指针

这句很经典。

C/C++函数指针,指针函数的用法,用处的更多相关文章

  1. 12-返回指针的函数&&指向函数的指针

    前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...

  2. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  3. 【C语言】14-返回指针的函数与指向函数的指针

    前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...

  4. C返回函数指针的函数

    如下函数 char (*retCharWithInt(char, char))(int); 申明了函数指针retCharWithInt,该指针指向一个形参是(char,char),返回值是char(* ...

  5. Day8 函数指针做函数参数

    课堂笔记 课程回顾         多态 virtual关键字 纯虚函数 virtual func() = 0;         提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. ...

  6. day10 文件处理指针使用 函数基本使用

    一:文件指针 强调:只有t模式下read(n),n代表字符个数,除此之外都是以字节为单位 with open('a.txt',mode='rt',encoding='utf-8') as f: #文本 ...

  7. typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针

    首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...

  8. 深入理解指针—>指针函数与函数指针的区别

    一. 在学习过程中发现这"指针函数"与"函数指针"容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数, ...

  9. 【C语言】-返回指针的函数与指向函数的指针

    本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.i ...

  10. C语言笔记 08_函数指针&回调函数&字符串&结构体&位域

    函数指针 函数指针是指向函数的指针变量. 通常我们说的指针变量是指向一个整型.字符型或数组等变量,而函数指针是指向函数. 函数指针可以像一般函数一样,用于调用函数.传递参数. 函数指针变量的声明: / ...

随机推荐

  1. springcloud微服务架构的思考

    在网上找到一张关于微服务体系架构的图 应用组件: 首先对于整个程序的入口应该是网关,zuul部分 这个组件在springcloud中的gateway服务之后,zuul可以进行网关分配,根据想应的路劲进 ...

  2. centos下 KeyboardInterrupt 退不出来的结局方法

  3. rest-assured的JsonPath使用方法总结

    JsonPath对于解析Json格式的数据来说非常简单,比如有下面这样的Json数据: {"lotto":{ "lottoId":5, "winnin ...

  4. HDU - 1024 M子段最大和 简单DP

    如何确保每个段至少一个数是关键(尤其注意负数情况) #include<iostream> #include<algorithm> #include<cstdio> ...

  5. SQL批量提交修改业务

    把你需要批量提交修改的东西在内存中修改完毕 然后执行以下代码 SqlConnection conn = new SqlConnection(ConnectionString);SqlDataAdapt ...

  6. docker 创建容器时遇到的坑

    坑一.时区问题 在创建系统镜像时,比如centos,会默认最小安装,并且时区默认的是UTC 所以在下好centos的原始镜像后,最好再重新构建一个新的镜像 # 命令 docker pull cento ...

  7. linux下——java——new Font("Times New Roman", 0, 18)验证码图片变成字符

    j'ava部署到了tomcat,发现了一个问题,我们登录的验证码出现了乱码,和字符 然而在windows服务器上,或者说我们本地的开发环境上面,则没有这种现象, 这是为什么? 查看源码,发现有一段代码 ...

  8. SpringCloud---服务治理---Spring Cloud Eureka

    1.概述 1.1 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理 ...

  9. java将list<T>导出为xls文件

    一.action层 /** * 导出list */ @SuppressWarnings("unchecked") public void exportBatch() { reque ...

  10. unity发布安卓lua路径不存在问题

    项目用的是xlua 采用自定义加载方式 使用File去读取路径下的文件,lua文件本来放在了StreamingAssets路径下 PC运行无问题,发布安卓后,居然提示路径不存在. 查了下资料后发现,F ...