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++的