-
相关知识
函数指针指向的是函数,函数的描述方法是由返回值和形参共同决定的。例如:
bool fun1(const string& s1,const string &s2); //这是一个bool(const string& s1,const string &s2)函数
普通指针:
int *p;//指向int的指针
函数指针:
用(*指针名)替换函数名例如:
bool (*p1)(const string& s1,const string &s2);
那么p1是指向bool(const string& s1,const string &s2)函数的指针,括号不能少否则就成了函数返回值的定义,p1成了函数名。
-
函数指针的定义,赋值,和使用
-
定义
按照上述说的描述函数的来,例如:
string& (*p1)(string &, string &);//正常情况 string& (p1)(string &, string &);//形参中,可省略*,调用方法有所不同
-
使用
-
普通的函数调用,等价于直接使用函数,不过需要增加*解释符号。
//先定义一个函数 string& shorterString1(string& s1, string& s2) { const string temp = shorterString(const_cast<const string&>(s1), const_cast<const string&>(s2)); return const_cast<string&>(temp); } p1 = shorterString1;//正确 函数名就是地址,类似数组名 p1 = &shorterString1;//正确,等价上一个 //*p1 = shorterString1;//错误 string s1 = "anvd", s2 = "sefse"; string ans = (*p1)(s1, s2);//实现指针的使用
-
作为形参,除了可以和上面相同使用方法外,还有另外一种。
//正常使用 string& shorterString2(string& s1, string& s2, const string& (*p1)(const string&, const string&)) { const string temp = (*p1)(const_cast<const string&>(s1), const_cast<const string&>(s2)); return const_cast<string&>(temp); } //另外的情况 string& shorterString2(string& s1, string& s2, const string& p1(const string&, const string&)) { const string temp = p1(const_cast<const string&>(s1), const_cast<const string&>(s2)); return const_cast<string&>(temp); }
-
-
c++函数指针
最新推荐文章于 2024-01-27 01:40:59 发布