浅析C++中的函数与指针

 更新时间:2015年09月14日 16:18:58   投稿:goldensun  
这篇文章主要介绍了浅析C++中的函数与指针,是C++入门学习中的基础知识,需要的朋友可以参考下

用函数指针变量调用函数

指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。

例 求a和b中的大者。

先按一般方法写程序:

#include <iostream>
using namespace std;
int main()
{
  int max(int x,int y); //函数声明
  int a,b,m;
  cin>>a>>b;
  m=max(a,b); //调用函数max,求出最大值,赋给m
  cout<<"max="<<m<<endl;
  return 0;
}
int max(int x,int y)
{
  int z;
  if(x>y) z=x;
  else z=y;
  return(z);
}

可以用一个指针变量指向max函数,然后通过该指针变量调用此函数。定义指向max函数的指针变量的方法是:


请将它和函数max的原型作比较:

  int max(int, int); //max函数原型

可以看出: 只是用(*p)取代了max,其他都一样。现在将上面程序的主函数修改如下:

#include <iostream>
using namespace std;
int main( )
{
  int max(int x,int y); //函数声明
  int (*p)(int,int); //定义指向函数的指针变量p
  int a,b,m;
  p=max; //使p指向函数max
  cin>>a>>b;
  m=p(a,b);
  cout<<″max=″<<m<<endl;
  return 0;
}


请注意第7行的赋值语句“p=max;”。此语句千万不要漏写,它的作用是将函数max的入口地址赋给指针变量p。这时,p才指向函数max。


指向函数的指针变量的一般定义形式为:
    函数类型  (*指针变量名)(函数形参表);

C++返回指针值的函数
一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。其概念与以前类似,只是带回的值的类型是指针类型而已。返回指针值的函数简称为指针函数。

定义指针函数的一般形式为:
    类型名 *函数名(参数表列);

例如:

  int *a(int x, int y);

相关文章

  • C++ Qt实现音视频播放功能

    C++ Qt实现音视频播放功能

    Qt版本 5.9 基于C++11 Qt核心组件与附加组件安装时请打钩 否则可能出现项目中缺少视频播放模块的问题,由于最近着手的Qt项目需要视频播放自己做的时候踩很多坑避免以后踩坑,故在此记录实现过程,感谢的朋友参考下吧
    2021-11-11
  • 深入学习C语言中常见的八大排序

    深入学习C语言中常见的八大排序

    排序编程中非常基础的的理论方法,虽然排序的方法多,但是理解起来并不难,它是最基本的,初学者一定要掌握的东西。本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值
    2021-11-11
  • Visual Studio安装的图文教程

    Visual Studio安装的图文教程

    这篇文章主要介绍了Visual Studio安装的图文教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • memset函数的使用分析

    memset函数的使用分析

    本篇文章是对memset函数的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++指针学习详解

    C++指针学习详解

    指针在 C\C++ 语言中是很重要的内容,并且和指针有关的内容一向令初学者头大,这篇文章主要给大家介绍了关于C/C++中指针的相关资料,需要的朋友可以参考下
    2021-09-09
  • C语言实现电影管理系统

    C语言实现电影管理系统

    这篇文章主要为大家详细介绍了C语言实现电影管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • c语言中的移位运算符

    c语言中的移位运算符

    这篇文章主要介绍了c语言中的移位运算符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • C语言实现古代时辰计时与现代时间换算

    C语言实现古代时辰计时与现代时间换算

    这篇文章主要为大家详细介绍了如何利用C语言实现古代时辰计时与现代时间换算,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-03-03
  • C语言堆栈入门指南

    C语言堆栈入门指南

    我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助
    2014-01-01
  • C/C++程序链接与反汇编工具objdump的使用介绍

    C/C++程序链接与反汇编工具objdump的使用介绍

    这篇文章主要介绍了C/C++程序链接与反汇编工具objdump的使用,程序构建过程的第二个阶段就是链接,链接过程输入的是目标文件的集合。每个目标文件可以被看作单个源代码文件的二进制存储版本
    2023-02-02

最新评论