C語言中數組做函數參數

今天在做ACM題的時候 ,遇到的一個問題,現在把這個寫下來吧,可能大家以後也會遇到。


下面是將輸入的數每個乘以2再輸出來。

但是結果輸出卻只將第一個數乘以2 ;

運行以後程序竟然輸出了:4,,3,4,5,6
只有第一個元素被“乘以2”。爲什麼呢?

運行下面的程序試一試:

運行結果是:5

                 1

   爲什麼在main函數中計算數組的大小是5,在test函數中計算數組arr的大小就變成了1了呢?在C語言中可以通過sizeof的方式取得一個數組的尺寸,這是我們已經知道的。但是一旦把這個數組傳遞給函數的時候,到了函數內部使用的就是指向這個數組的指針了,雖然在test函數中arr聲明的是數組,但是這裏的arr只是一個指針而已了,arr本質上只是一個int類型的指針,而int類型的指針的大小是4,所以sizeof(arr)/sizeof(int)的結果就是1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章