作者afar ( ???)
看板C_and_CPP
标题[问题] 抓不到错误
时间Mon Jun 1 22:47:00 2009
/*请设计一个主程式,输入五个数字,将数字阵列传入function,
并且将此function宣告为指标(int *maxmin (int a[]) ),
function计算出这五个数字中最大的数字与最小的数字并且放入阵列m[2]中,
利用指标回传到主程式将这两个数字列印出来。*/
#include<iostream>
using namespace std;
int *maxmin(int a[])
{
int m[2]={0, 999};
int *c = m;
int i=0;
for(i=0;i<5;i++)
{
if(a[i]>m[0])
m[0]=a[i];
if(a[i]<m[1])
m[1]=a[i];
}
return c;
}
int main(void)
{
int a[5];
int *d=new int[2];
int i=0;
d[1]=5;
cout << "请输入字串" << endl;
for(i=0;i<5;i++)
cin >> a[i];
d = maxmin(a);
cout << *d << "," << *(d+1) << endl;
system("pause");
return 0;
}
在函数里有印出来看,是正确的
但是一传回主程式,d[1]就会变成很奇怪的值
有人可以解答吗?
对指标不太熟,不知道有没有多余的程式码
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.106.167
1F:推 chrisdar:请不要传回区域变数的位址 06/01 22:50
2F:→ chrisdar:请严格厉行 "谁要吃泡面的 就自己烧开水" 06/01 22:52
3F:推 chrisdar:不过我用VS2008 编译看起来还蛮正常的 06/01 22:57
4F:推 ledia:很简单呀, 就是传回的区域变数被盖掉就没救啦 06/01 23:03
5F:→ ledia:置底十诫之六 06/01 23:03
6F:→ afar:感激不尽 06/01 23:06