[問題] c++函式資料的問題

作者: s52222b (陳豬靜)   2016-08-17 19:44:01
各位好 小妹我是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
作者: Caesar08 (Caesar)   2016-08-17 20:04:00
for(int i=0;i<=as;i++)sort(answer,10);因為array decay to pointer
作者: s52222b (陳豬靜)   2016-08-17 20:07:00
照理說MAIN理的東西應該部會被函式影響
作者: wawi2 (@@)   2016-08-17 20:09:00
照理說會影響
作者: s52222b (陳豬靜)   2016-08-17 20:11:00
那為甚麼下面的X=X+Y直沒有被影響阿抱歉我初學者很多觀念不太懂
作者: james1022jk (雁)   2016-08-17 20:15:00
X=X+Y你找一下call by value就會知道了
作者: Caesar08 (Caesar)   2016-08-17 20:20:00
因為你的m是傳值,average與sort是pointer
作者: yvb   2016-08-17 20:22:00
作者: s52222b (陳豬靜)   2016-08-17 20:24:00
感謝各位哥的解答 小妹懂了
作者: fatrabitree (胖兔子)   2016-08-18 00:01:00
找中位數不用sort

Links booklink

Contact Us: admin [ a t ] ucptt.com