看板 C_and_CPP 關於我們 聯絡資訊
各位好 小妹我是c++自學初新者 最近學到函式的部分 小妹我利用陣列跟函數寫了一個 計算陣列平均值、中位數、以及兩個數相加的簡單程式 一開始的average沒有什麼問題,但是在計算中位數時 利用了sort函式排序,進而計算出中位數, 但是main function中的陣列排序竟然被sort影響 原本陣列{1,2,10,4,8,7,6,5,9,3} 但是經過sort函式後 main的資料被改變了 經過sort後的main{1,2,3,4,5,6,7,8,9,10} 這是我覺得納悶的地方,因為照理說函式部會影響到main的值 因此我在最下面寫了一個 x=x+y的函式,可是在最後的結果中main的x並沒有 被x=x+y影響 為甚麼經過排序後main的陣列排序被影響了呢!!!!!! 求c++大神解惑 附上我的程式碼http://ideone.com/P43RhC -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.203.65.233 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1471434244.A.461.html ※ 編輯: s52222b (203.203.65.233), 08/17/2016 20:01:22 ※ 編輯: s52222b (203.203.65.233), 08/17/2016 20:05:45
Caesar08: for(int i=0;i<=as;i++) 08/17 20:04
Caesar08: sort(answer,10); 08/17 20:05
Caesar08: 因為array decay to pointer 08/17 20:07
s52222b: 照理說MAIN理的東西應該部會被函式影響 08/17 20:07
wawi2: 照理說會影響 08/17 20:09
s52222b: 那為甚麼下面的X=X+Y直沒有被影響阿 08/17 20:11
s52222b: 抱歉我初學者很多觀念不太懂 08/17 20:11
james1022jk: X=X+Y你找一下call by value就會知道了 08/17 20:15
Caesar08: 因為你的m是傳值,average與sort是pointer 08/17 20:20
yvb: http://goo.gl/ARSwzY 08/17 20:22
s52222b: 感謝各位哥的解答 小妹懂了 08/17 20:24
fatrabitree: 找中位數不用sort 08/18 00:01