作者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