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

请帮我看看有关函数指针这几句不明白

lindayanglong 发布于 2008-08-29 17:12, 552 次点击
请帮我看看有关函数指针这几句不明白: int max(int,int);是什么作用
int (*p)(int,int)=&max;
和d=(*p)((*p)(a,b),c);怎么理解,总之函数的执行过程是怎样的?
请指教

#include<iostream>
using namespace std;
int  max(int x,int y)
{
    return x>y?x:y;

};
void main()
{
 
    int max(int,int);
    int (*p)(int,int)=&max;
    int a,b,c,d;
    cout<<"input three integer:"<<endl;
    cin>>a>>b>>c;
    d=(*p)((*p)(a,b),c);
    cout<<d;
}
5 回复
#2
p1s2008-08-29 17:25
int max(int,int);这个函数的作用是返回较大的一个数
但是函数声明放在main体内不太好吧,既然在main之前已经定义了,这个去掉也罢。
另外int (*p)(int,int)=&max;这是定义了一个函数指针
d=(*p)((*p)(a,b),c);相当于d=max(max(a,b),c);
看看对不对?
#3
dcuzhang2008-08-29 17:33
int max(int,int); --函数的声明,在你的程序里没有用删了也可, 因为你的 max(), 在使用前定义了。 如果你把max(), 放到main()后边就必须要这句。

int (*p)(int, int)是一个函数指针, 指向一个返回值是int
有两个int 形参的 函数 , 在这是max().

所以 (*p)((*p)(a,b),c);
== max(max(a,b),c);
#4
lindayanglong2008-08-30 15:27
明白了 谢谢
#5
zhuerhua2008-09-01 11:21
两位都对吧
#6
a860326222008-09-03 20:45
新手学习来的
1