利用指针求最值是出现有关问题
利用指针求最值是出现问题
大家好,本来程序利用全局变量的话,这个程序就没有什么问题,但如果利用指针求最值是,却现出一个问题,就是程序运行时没有反应.
大家看看我的程序:
#include <iostream.h>
#define num 5
void M(int *a,int *x,int *y)
{
int *p=a;
x=y=a;
for(p=a+1;p <a+num;p++)
{
*x=(*p> *x)?*p:*x;
*y=(*p <*y)?*p:*y;
}
}
void main()
{
int a[num];
cout < < "请输入 " < <num < < "个数: " < <endl;
for (int i=0;i <num;i++)
cin> > a[i];
int *max,*min;
max=min=a;
M(a,max,min);
cout < < "最大值是: " < <*max < < "\t最小值是: " < <*min < <endl;
}
请高手们指点,不知道错在哪了??
------解决方案--------------------
void main()
{
int a[num];
cout < < "请输入 " < <num < < "个数: " < <endl;
for (int i=0;i <num;i++)
cin> > a[i];
int *max,*min;
max=min=a;
M(a,max,min);
cout < < "最大值是: " < <*max < < "\t最小值是: " < <*min < <endl;
}
主程序中
max=min=a;
语句把max与min的地址赋值为a的地址,是什么意思?这样子的话,传递参数后修改的为同一个地址,每次操作后,都同时修改了x和y的内容.所以到最后最大最小值是一样的.
子函数中,
x=y=a;
是什么意思呢?这样子还是对地址做操作啊.同意1楼的观点.
另外,我在.NET2005下运行函数并没有出现楼主说的那种运行时错误.
大家好,本来程序利用全局变量的话,这个程序就没有什么问题,但如果利用指针求最值是,却现出一个问题,就是程序运行时没有反应.
大家看看我的程序:
#include <iostream.h>
#define num 5
void M(int *a,int *x,int *y)
{
int *p=a;
x=y=a;
for(p=a+1;p <a+num;p++)
{
*x=(*p> *x)?*p:*x;
*y=(*p <*y)?*p:*y;
}
}
void main()
{
int a[num];
cout < < "请输入 " < <num < < "个数: " < <endl;
for (int i=0;i <num;i++)
cin> > a[i];
int *max,*min;
max=min=a;
M(a,max,min);
cout < < "最大值是: " < <*max < < "\t最小值是: " < <*min < <endl;
}
请高手们指点,不知道错在哪了??
------解决方案--------------------
void main()
{
int a[num];
cout < < "请输入 " < <num < < "个数: " < <endl;
for (int i=0;i <num;i++)
cin> > a[i];
int *max,*min;
max=min=a;
M(a,max,min);
cout < < "最大值是: " < <*max < < "\t最小值是: " < <*min < <endl;
}
主程序中
max=min=a;
语句把max与min的地址赋值为a的地址,是什么意思?这样子的话,传递参数后修改的为同一个地址,每次操作后,都同时修改了x和y的内容.所以到最后最大最小值是一样的.
子函数中,
x=y=a;
是什么意思呢?这样子还是对地址做操作啊.同意1楼的观点.
另外,我在.NET2005下运行函数并没有出现楼主说的那种运行时错误.