两者主要区别,一个是函数(指针函数),一个是指针变量(函数指针)。

指针函数

(1)定义
指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址。
(2) 定义式
type *func (type , type)
如:int *max(int x, int y)
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
(3)演示代码

    #include <iostream>  using namespace std;  int *GetNum(int x); //指针函数声明形式  void main(void)  {  cout<<"===============start================"<<endl;  int num;  cout<<"Please enter the number between 0 and 6: ";  cin>>num;  cout<<"result is:"<<*GetNum(num)<<endl;    //输出返回地址块中的值  }  int *GetNum(int x) {  static int num[]={0,1,2,3,4,5,6};  return &num[x];  //返回一个地址  }  

子函数返回的是数组中某一元素所在的地址值,输出的是这一地址中存储的数。

函数指针

(1)定义
函数指针:指向函数的指针变量,本质上是一个指针变量
(2) 定义式
type (*func)(type , type )
如:int (*max)(int a, int b)
这个特殊的指针指向一个返回整型值的函数。指针的声明必须和它指向函数的声明保持一致。指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。

    #include <iostream>  using namespace std;  int max(int a, int b) {  return a>b?a:b;  }  void main(void)  {  cout<<"===========start==========="<<endl;  int (*func)(int,int);       //定义一个指向该函数形式的指针变量  func=max;  //或者 func=&max; 将max函数的首地址赋给指针funcint a,b;  cout<<"Please enter two numbers:";  cin>>a>>b;  int result=(*func)(a,b);    //运用指针变量调用函数  cout<<"max="<<result<<endl;  }  

参考:
http://blog.csdn.net/aigoleague/article/details/8622665
http://blog.csdn.net/u014131641/article/details/51104808

C++笔记——指针函数/函数指针相关推荐

  1. C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 C++课程安排 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1. ...

  2. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  3. 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数

    前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...

  4. C语言学习笔记10-指针(动态内存分配malloc/calloc、realloc、释放free,可变数组实现;Tips:返回指针的函数使用本地变量有风险!;最后:函数指针)

    C语言:指针 1. 指针:保存地址的变量 *p (pointer) ,这种变量的值是内存的地址.   取地址符& 只用于获取变量(有地址的东西)的地址:scanf函数-取地址符   地址的大小 ...

  5. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  6. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

  7. C++ Primer 5th笔记(6)chapter6 函数:函数指针

    1. 函数指针 bool lengthCompare(const string&, const string&); bool (*pf)(const string&, cons ...

  8. 12-黑马程序员------C 语言学习笔记--- C语言指针与函数

    黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培 ...

  9. 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...

  10. 【学习笔记】【C语言】返回指针的函数

    函数如果带*的返回的就是指针 char *test() {  } 1 #include <stdio.h> 2 char *test(); 3 4 /* 5 返回指针的函数 6 */ 7 ...

最新文章

  1. Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点(Simple Line Plot with Data points in Matplotlib)
  2. 解决android 编译失败 Unexpected scopes found in folder
  3. 回馈粉丝,包邮送一台全新iPad
  4. java怎么捕捉除数异常_Java异常的捕获及处理---小总结
  5. BZOJ 1878 HH的项链 | 主席树
  6. 飞秋下载2010正式版_飞秋下载
  7. nginx php 源码安装,Nginx和php安装及配置一之编译安装nginx-1.8.0
  8. java解析xml报文_java 如何解析http请求返回的xml报文
  9. MySQL05:DCL语言、视图
  10. Stepper MNKit
  11. HDU 1016 DFS
  12. 荒野大镖客ol 服务器位置,荒野大镖客OL盗贼据点分布位置
  13. 【Android 学习记录】:针对Android 7.0 抓不到HTTPS包的情况
  14. mysql mpm_mysql mpm
  15. 周未特别节目《前赤壁赋》
  16. 郑捷 机器学习算法与编程实践 --ID3决策树 python3 代码
  17. Js——ES2015(ES6)基础语法
  18. 科学大家谈 | 全球著名蛋白质工程学家——张阳
  19. 微信吸粉技巧之:微社区
  20. c/c++中的内存分配器

热门文章

  1. axios中POST请求变成OPTIONS处理
  2. .NET CORE 2.1 导出excel文件的两种方法
  3. 物联网正在蚕食嵌入式系统市场
  4. 【java基础】zip压缩文件
  5. 大道至简,阿里巴巴敏捷教练的电子看板诞生记
  6. php安装event扩展的问题
  7. bat批量删.svn
  8. 关于字符集--总结,补遗以及问题
  9. 在OnLButtonDown获取其他控件被点击的消息
  10. 百度熊掌推送php源码,织梦百度熊掌主动推送教程