C++函数指针详解
概述本文详细介绍了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++中,数组变量的名字是一个指向该数组元素类型的指针常量(存放首元素的地址),类似地,函数的名字也表示一个指向该函数的指针常量(存放该函数入口地址):
int array; // array是一个指向int的指针常量int *p = array; // p是一个指向int的指针变量,p = array合法p; // 等价于arrayvoid test(int a){ cout
页:
[1]