先看函数指针
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. 对结构化学习(structured learning)的理解

    接触深度学习以来一直接触的概念都是回归,分类,偶尔接触到结构化学习的概念,似懂非懂的糊弄过去,实在是不负责的表现 翻阅维基百科https://en.wikipedia.org/wiki/Structu ...

  2. GTF/GFF文件的差异及其相互转换

    我们在做生物分析的时候,经常会碰到GFF格式的文件以及GTF格式的注释文件.他们有着相似的名字,甚至连内容都极为相似~那么,他们究竟差在哪里呢? GFF全称为general feature forma ...

  3. python数据结构与算法之list

    1. 数据结构的操作 作为一种包含元素的数据结构,需要提供一些“标准”操作: 创建和销毁 判断是否空,如果容量有限,还需判断是否满 向结构中加入元素或从中删除 访问结构里的元素 不同的编程语言可能影响 ...

  4. Tensorflow基础-mnist数据集

    MNIST数据集,每张图片包含28*28个像素,把一个数组展开成向量,长度为28*28=784,故数据集中mnist.train.images是一个形状为[60000,784]的张量,第一个维度数字用 ...

  5. HDU - 4035 循环型概率DP

    题解待会在上 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring ...

  6. 详解SimpleXML添加_修改_删除_遍历XML节点属性

    SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM ...

  7. 云服务的三种形式laas,paas,saas

    “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务. 云也是分层的 任何一个在互联网上提供其服务的公司都可以叫做云计算公司.其实云计算分几 ...

  8. poi读取excel2010

    package com.icss.test; import java.io.FileInputStream;import java.io.InputStream;import java.util.Ar ...

  9. gradle cache目录(.gradle)剖析

    https://zhuanlan.zhihu.com/p/26473930 gradle下载后会对文件路径进行修饰,本文给出反向解析,把文件路径修改为原始路径的办法. 之所以研究这个,本来的目的是为了 ...

  10. 内置组件 && vue中强大的缓存机制之keep-alive

    vue中强大的缓存机制之keep-alive 最近在用vue做项目,在切换页面时发现切换回原来的页面无法保存原来的状态. 如A页面需要ajax请求数据,然后切换到B页面做某些事情,再切换回A页面时,A ...