注册 登录
编程论坛 C++教室

函数指针问题。

zjl138 发布于 2008-01-13 12:51, 1478 次点击
这个程序大体意思我懂,但就是不大明白函数指针是怎样工作的?不清楚它的传值过程?望高手解释一下它的具体流程!谢谢!
#include<iostream>
using namespace std;
int f1(int a,int b){return a+b;}
int f2(int a,int b){return a-b;}
int f3(int(*t)(int,int),int a,int b){return (*t)(a,b);}
int main(){
int(*p)(int,int);//这句的作用?
p=f1;//这句跟下面一句的具体联系是怎样的?
cout<<f3(p,4,8)<<endl;
p=f2;
cout<<f3(p,8,4)<<endl;
return 0;
}
5 回复
#2
sunkaidong2008-01-13 14:32
#include<iostream>
using namespace std;
int f1(int a,int b){return a+b;}
int f2(int a,int b){return a-b;}
int f3(int(*t)(int,int),int a,int b){return (*t)(a,b);}
int main(){
int(*p)(int,int);//这句的作用?声明一个指向一个带有两个int型的函数指针,并且这个函数是返回int
p=f1;//这句跟下面一句的具体联系是怎样的?给指针赋值
cout<<f3(p,4,8)<<endl;
p=f2;
cout<<f3(p,8,4)<<endl;
return 0;
}
#3
忘记喧嚣2008-01-13 20:21
意思是 (*p) 就是指针函数 多了() 和 *p区别

[[italic] 本帖最后由 忘记喧嚣 于 2008-1-13 20:22 编辑 [/italic]]
#4
lonmaor2008-01-13 21:28
解释下f3中的形参声明吧
int(*t)(int,int)
声明了一个指针,指针是指向一个函数:此函数接受两个int参数,并返回一个int值。
称之曰 函数指针。

楼主的程序中通过更改函数指针p的指向令其调用不同的函数。
#5
zjl1382008-01-13 22:04
谢谢楼上各位了,经过各位指点明白了不少,又查看了一些书,对函数指针比较了解了,但对其应用还不大会,要是应用函数指针自已写代码,肯定会还很多错误的!!!呵呵!
#6
sunkaidong2008-01-15 15:50
慢慢来啊,相信你会成功的,我不是计算机的学生但是我相信只要喜欢肯定会成功的.呵呵
1