C++函数指针详解

打印 上一主题 下一主题

主题 578|帖子 578|积分 1734

概述

本文详细介绍了C/C++中的普通函数和类的成员函数的指针。联合C++代码示例讲解了函数指针作为其他函数的输入、返回值以及typedef如何提高代码可读性的实用技巧。对于类的成员函数(方法)指针,则分为静态和非静态两种情况。最后总结了普通函数、类的非静态成员函数、类的静态成员函数的声明、赋值和界说的C++语法以供查阅。
普通函数的指针

声明、界说和赋值

首先让我们来区别以下4条声明语句:
  1. int x;      // x是一个int型的变量
  2. int *x;     // x是一个指向int型变量的指针
  3. int *x();   // x是一个返回int型指针的函数
  4. int (*x)(); // x是一个函数指针,输入参数为空,返回类型为int型指针
复制代码
因此,把一个名为fun的函数的声明语句变为函数指针变量pfun的声明语句,只必要将 fun 变为 (*pfun),其他的稳固即可(注意:小括号必不可少!)。
  1. double fun(string& str1, string &str2);       // 函数fun的声明
  2. double (*pfun)(string& str1, string &str2);   // 函数指针变量pfun的声明
复制代码
在C/C++中,数组变量的名字是一个指向该数组元素类型的指针常量(存放首元素的地址),类似地,函数的名字也表示一个指向该函数的指针常量(存放该函数入口地址):
[code]int array[5];      // array是一个指向int的指针常量int *p = array;    // p是一个指向int的指针变量,p = array合法p[3];              // 等价于array[3]void test(int a){ cout
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表