概述
本文详细介绍了C/C++中的普通函数和类的成员函数的指针。联合C++代码示例讲解了函数指针作为其他函数的输入、返回值以及typedef如何提高代码可读性的实用技巧。对于类的成员函数(方法)指针,则分为静态和非静态两种情况。最后总结了普通函数、类的非静态成员函数、类的静态成员函数的声明、赋值和界说的C++语法以供查阅。
普通函数的指针
声明、界说和赋值
首先让我们来区别以下4条声明语句:- int x; // x是一个int型的变量
- int *x; // x是一个指向int型变量的指针
- int *x(); // x是一个返回int型指针的函数
- int (*x)(); // x是一个函数指针,输入参数为空,返回类型为int型指针
复制代码 因此,把一个名为fun的函数的声明语句变为函数指针变量pfun的声明语句,只必要将 fun 变为 (*pfun),其他的稳固即可(注意:小括号必不可少!)。- double fun(string& str1, string &str2); // 函数fun的声明
- 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 |