#include<iostream.h>int * fun(int a,int b)
{
if(a>b)return &a;
return &b;
}int neg(int n){return -n;}void main()
{
int *p;
p=fun(3,5);
int k=neg(9);
cout<<*p;
}为什么输出是9?????????

解决方案 »

  1.   

    int * fun(int a,int b)
    {
    if(a>b)return &a;
    return &b;
    }你要返回参数,需要通过 指针或者引用。否则 局部变量在函数外面无效。int * fun(int *a,int *b)
    {
    if(*a > *b)
    {
    return a;
    }
    else
    {
    return b;
    }

    }
      

  2.   

    int fun(int a, int b)
    {
        return a > b ? a : b:
    }
    直接返回值就可以,你为何要返回地址!!
      

  3.   


    #include<iostream.h>int * fun(int &a,int &b)
    {
    if(a>b)return &a;
    return &b;
    }int neg(int n){return -n;}void main()
    {
    int *p;
    int a = 3,b = 5;
    p=fun(a,b);
    int k=neg(9);
    cout<<*p;
    }
    这样就行了,用引用或指针来传递就行了
      

  4.   

    还有fun(3,5)为什么不传递给fun(&a,&b)呢?
      

  5.   

    一楼是正解
    int * fun(int a,int b)函数传入的是3,5的值,a和b接受后其值就是3,5
    &a,&b则是局部变量的地址,返回后当然错了