技术开发 频道

C++:函数指针基础全面解析

  【IT168技术】这篇是为了加深记忆所写。发现,很多知识若不经过反复的琢磨和动手实践,是很难记得住的。

  ①函数指针的初始化。函数如下:

1 int CompareString(const string& str1, const string& str2)
2 {
3     return str1.compare(str2);  
4 }

   函数的初始化有两种方式:

  第一种,也是最普遍的方式:

int (*CompareFunction)(const string&, const string&) = CompareString;

   第二种,是使用typedef定义函数类型,这种写法有助于对代码的理解:

typedef int (*CompareFunctionType)(const string&, const string&);
CompareFunctionType CompareFunction
= CompareString;

   ② 函数指针赋值。

  函数名可以理解为该类型函数的指针。当然,取地址操作符作用于函数名上也能产生指向该类型函数的指针。也就是说下面两种赋值都是可行的:

CompareFunctionType CompareFunction = CompareString;
CompareFunctionType CompareFunction
= &CompareString;

  ③函数调用。

  无论是用函数名调用,还是用函数指针调用,还是用显式的指针符号调用,其写法是一样的:

CompareString("abc", "cba");
CompareFunction(
"abc", "cba");
(
*CompareFunction)("abc", "cba");

   ④ 函数指针的数组。

  对于函数指针的数组,强烈建议使用typedef方式定义类型之后再使用,不然影响代码的阅读性,继续以以上例子为例:

//without typedef
int (*CompareFunctionArray[3])(const string&, const string&);
 //with typedef
CompareFunctionType CompareFunctionTypeArray[3];
0
相关文章