作者s52222b (陳豬靜)
看板C_and_CPP
標題[問題] c++函式改變了main陣列的排序
時間Wed Aug 17 19:44:01 2016
各位好 小妹我是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
→ s52222b: 感謝各位哥的解答 小妹懂了 08/17 20:24
→ fatrabitree: 找中位數不用sort 08/18 00:01