当前位置: 代码迷 >> C语言 >> 这个程序怎样改一下,哪位给我指点一下????
  详细解决方案

这个程序怎样改一下,哪位给我指点一下????

热度:232   发布时间:2008-04-30 21:33:45.0
这个程序怎样改一下,哪位给我指点一下????
/*编程实现:求两个整数中的较小者,在程序中使用指针形式实现对函数的调用。*/
#include<stdio.h>
int min(int a,int b)
{
    if(a<b)return a;
    else return b;
}
main()
{
    int min(int a,int b);
    int (*pmin)();
    int x,y,z;
    pmin=min;
    printf("please input two numbers:\n");
    scanf("%d%d",&x,&y);
    z=(*pmin)(x,y);
    printf("min_number=%d",z);
}
搜索更多相关的解决方案: 编程  

----------------解决方案--------------------------------------------------------
int (*pmin)(); 着是什么 函数?? 定义了没?需要这个么??
----------------解决方案--------------------------------------------------------
pmin类型不对,应该是
int (*pmin)(int,int);
或者如果你不怕安全问题的话
int (*pmin)();
(*(int(*)(int,int))pmin)(x,y);
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]yd4433[/un] 在 2008-4-30 21:38 的发言:[/bo]

int (*pmin)(); 着是什么 函数?? 定义了没?需要这个么??

函数指针
----------------解决方案--------------------------------------------------------
int min(int,int);
    int (*pmin)()=(int(*)())min;
    ((int(*)(int,int))pmin)(x,y);

话说这样其实也可以……
----------------解决方案--------------------------------------------------------
楼上的转化很安全...但是没必要那么严格做类型转化吧?
----------------解决方案--------------------------------------------------------
话说,我一直用C++编译器来编译C代码……为了C++的强类型安全……
还有,虽然默认的调用风格是cdecl,但是LZ真的不怕堆栈失衡吗??
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int min(int a,int b)
{
    if(a<b)return a;
    else return b;
}
int main(void)
{
    int min(int a,int b);
    int (*pmin)(int,int);
    int x,y,z;
    pmin=min;
    printf("please input two numbers:\n");
    scanf("%d%d",&x,&y);
    z=pmin(x,y);
    printf("min_number=%d",z);
    return 0;
}


[color=white]
----------------解决方案--------------------------------------------------------
int (*pmin)();定义指向函数min的指针变量,需要指出函数min的形参!
----------------解决方案--------------------------------------------------------
搞懂了,谢谢大家了!!!!!!!!!!!!
#include<stdio.h>
int min(int a,int b)
{
    if(a<b)return a;
    else return b;
}
main()
{
    int min(int a,int b);
    int (*pmin)(int,int);
    int x,y,z;
    pmin=min;
    printf("please input two numbers:\n");
    scanf("%d%d",&x,&y);
    z=pmin(x,y);
    printf("min_number=%d",z);
   
}
----------------解决方案--------------------------------------------------------
  相关解决方案