当前位置:编程学习 > C/C++ >>

c++关于指针变量作为函数参数的编程题查错

原题如下:一个数组有n个元素,要求编写一个函数(参数为指针变量),求取数组的最大值和最小值(通过参数返回)。在主函数中调用该函数,通过参数返回数组的最大值和最小值。我自己的code如下:#include <iostream>using namespace std;void m_m(float num[100],int n,float *max,float *min);void main(){ float num[100]; cout<<"请输入你想定义的数组所包含的元素的个数"<<endl; int n; cin>>n; cout<<"请对这"<<n<<"个元素依次赋值"<<endl; int i; for(i=0;i<n;i++) cin>>num[i]; float *max,*min; max=&num[0]; min=&num[0]; m_m(num,n,max,min); cout<<"这个数组的"<<endl; cout<<"最大值为"<<*max<<endl; cout<<"最小值为"<<*min<<endl;}void m_m(float num[],int n,float *max,float *min){ int i; for(i=0;i<n;i++) { if(num[i]>*max) max=&num[i]; if(num[i]<*min) min=&num[i]; }}补充:不知为什么,如果在函数里让其输出*max和*min,都是正确的,可好像值就是返回不到主函数去。似乎回到主函数后,*max和*min又变到初始赋值的num[0]了,可是明明要执行函数呀?希望同学指点下,感谢!
答案:想传回指针,就要用指针的指针。下面的程序是可以执行的

using namespace std;
void m_m(float num[100],int n,float **max,float **min);


int main(int argc,char *argv[])
{
    float num[100];
    cout<<"请输入你想定义的数组所包含的元素的个数"<<endl;
    int n;
    cin>>n;
    cout<<"请对这"<<n<<"个元素依次赋值"<<endl;
    int i;
    for (i=0;i<n;i++) cin>>num[i];
    float *max,*min;
    max=&num[0];
    min=&num[0];
    m_m(num,n,&max,&min);
    cout<<"这个数组的"<<endl;
    cout<<"最大值为"<<*max<<endl;
    cout<<"最小值为"<<*min<<endl;
    return 0;
}
void m_m(float num[],int n,float **max,float **min)
{
    int i;
    for (i=0;i<n;i++)
    {
        if (num[i]>**max) *max=&num[i];
        if (num[i]<**min) *min=&num[i];
    }
}

上一个:谁了解c++和java?懂编程的麻烦进来下
下一个:求winsocket编程的最简例子,C++的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,