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

看板C_and_CPP作者 (陳豬靜)時間9年前 (2016/08/17 19:44), 9年前編輯推噓1(1011)
留言12則, 6人參與, 最新討論串1/1
各位好 小妹我是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

08/17 20:04, , 1F
for(int i=0;i<=as;i++)
08/17 20:04, 1F

08/17 20:05, , 2F
sort(answer,10);
08/17 20:05, 2F

08/17 20:07, , 3F
因為array decay to pointer
08/17 20:07, 3F

08/17 20:07, , 4F
照理說MAIN理的東西應該部會被函式影響
08/17 20:07, 4F

08/17 20:09, , 5F
照理說會影響
08/17 20:09, 5F

08/17 20:11, , 6F
那為甚麼下面的X=X+Y直沒有被影響阿
08/17 20:11, 6F

08/17 20:11, , 7F
抱歉我初學者很多觀念不太懂
08/17 20:11, 7F

08/17 20:15, , 8F
X=X+Y你找一下call by value就會知道了
08/17 20:15, 8F

08/17 20:20, , 9F
因為你的m是傳值,average與sort是pointer
08/17 20:20, 9F

08/17 20:22, , 10F
08/17 20:22, 10F

08/17 20:24, , 11F
感謝各位哥的解答 小妹懂了
08/17 20:24, 11F

08/18 00:01, , 12F
找中位數不用sort
08/18 00:01, 12F
文章代碼(AID): #1Nj4u4HX (C_and_CPP)