[問題] 抓不到錯誤

看板C_and_CPP (C/C++)作者 ( ???)時間16年前 (2009/06/01 22:47), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
/*請設計一個主程式,輸入五個數字,將數字陣列傳入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

06/01 22:50, , 1F
請不要傳回區域變數的位址
06/01 22:50, 1F

06/01 22:52, , 2F
請嚴格厲行 "誰要吃泡麵的 就自己燒開水"
06/01 22:52, 2F

06/01 22:57, , 3F
不過我用VS2008 編譯看起來還蠻正常的
06/01 22:57, 3F

06/01 23:03, , 4F
很簡單呀, 就是傳回的區域變數被蓋掉就沒救啦
06/01 23:03, 4F

06/01 23:03, , 5F
置底十誡之六
06/01 23:03, 5F

06/01 23:06, , 6F
感激不盡
06/01 23:06, 6F
文章代碼(AID): #1A8-db-- (C_and_CPP)
文章代碼(AID): #1A8-db-- (C_and_CPP)