
uj5u.com熱心網友回復:
nums[3] = temp; 為什么會第0到1位會是1nums[i] = nums[i-2]; 越界是,第一位為什么會輸出個16而不是其他的數
uj5u.com熱心網友回復:
最好貼代碼出來uj5u.com熱心網友回復:
你也知道是越界了至于為什么是16 這是一個多余的問題 輸出17一樣問為什么17
沒為什么 沒必要討論
別越界就沒這破事了
uj5u.com熱心網友回復:
1. nums[3] = temp; 為什么會第0到1位會是1從程式看,程式里陣列資料移位時,并沒有對nums[0]進行賦值操作,所以nums[0]的資料仍然是之前的輸入值1
2. nums[i] = nums[i-2]; 陣列訪問越界
for回圈i == 1 時,nums[i-2] >> nums[-1] 訪問越界,訪問到nums陣列前一段記憶體,這段記憶體的資料是不確定的,可能是16,也可能是其他值,你換個時間段運行,或者做一通其他操作,運行出來的資料也可能會不一樣的。
你可以除錯看一下記憶體資料,或者定義一個指標,指向nums陣列前一個地址(int),獲取一下該記憶體地址的資料就清楚了
PS:一定要萬分注意陣列的訪問越界問題,一定要避免,以免出現不必要的錯誤。陣列可以通過下標取余的方法來訪問:陣列名[ 下標值 % 陣列長度]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82103.html
標籤:C語言
上一篇:卑微小白在線求助
