乙個陣列作為引數傳遞引發的思考?

2021-09-10 22:35:28 字數 1064 閱讀 7332

#乙個陣列作為引數傳遞引發的思考(初學者常犯的錯誤)

#正文今天給大家分享一下陣列作為引數傳遞時,可能會遇到的坑,接下來上**(實現氣泡排序)。

函式的功能很簡單,呼叫sort()函式對陣列進行排序,讓我們來看看執行結果吧。

執行環境x86得到的結果為:

執行環境為x64得到的結果為:

通過上面的兩個執行結果,有了如下問題:

1.為什麼在x86環境下輸出資料有4組,x64下資料有8組?

答:其實原因很簡單在程式列印中我們在for中進行了sizeof(result)運算,由於result為int*指標,在指標在x86環境下占用4位元組,在x64環境下占用8位元組。

2.如何才能正確的得到陣列中的10組資料?

答:由於在sort()函式中引數為int* 的指標,而長度有當前的編譯環境決定,所以我們需要告訴程式,我們資料的長度,故修改最初** :

x86環境,得到結果如下:

x64環境,得到結果如下:

好了,我相信大家看到這裡也明白了當陣列作為引數傳遞時,在子函式中是無法直接得到陣列的長度,需要我們去告訴它。

乙個陣列長度問題引發的思考

var arr arr 0 0 arr 1 1 arr.foo c console.log arr.length 為什麼.length不會把foo算進陣列長度?進一步思考為什麼關聯陣列沒有陣列長度?var arr arr 5 1 arr.foo c console.log arr.length 結合...

乙個陣列引發的「災難」

國慶後上班,領導要求給乙個模組寫乙個pc測試軟體,功能要求很簡單,讀取配置檔案,然後根據檔案中的資料對模組進行依次定時查詢 設定,加上測試用了三天時間 注 用本人電腦做的測試 最後是發給同事,但在他的電腦都無法執行,雙擊軟體沒有任何反應。需要說明一下 我的電腦是32位的win8系統,64位win7系...

乙個陣列插入另乙個陣列引入的思考

今天在群裡有人丟擲了個問題 如何把 0,1,4 2,3 0,1,2,3,4 首先想到的是查下api有沒有相關的。於是找到了個 splice。splice的用法是 arrayobj.splice start,deletecount,item1 item2 itemn 引數是很多很多的引數,如item1...