數組作爲函數形參和用指針作爲函數形參

 還是有差別的

雖然大多數時候都可以相互用最大的差別就是指針可以改變,可以通過指針改變指向內容的值,但數組名不行

舉個例子:(分別作爲形參)

int num[10], *p;

p = num;//此時p指向數組的第一個元素

在主函數裏調用兩個函數

1 Sum(num);

2 Sum(p+2,10);

這就有區別了,因爲num數組首地址它不能變化,但是此時p指向了數組的第三個元素,而且後面的那個10也是可以改變的,所以說用指針作爲形參的時候要帶一個int n 表示你要處理的數的個數,所以說用指針作爲形參的話會給你一種假象,它的確是指向的數組的某個元素(這要看你的指針移動了,比如說p+2等等,數組名不能移動),但是它僅僅只是一個指針,你可以在調用的函數裏用sizeof(num),sizeof(p)求它們的值,就知道爲什麼總是要加上一個int n了,因爲如果不加的話函數就不知道你要操作的數的個數,另外別忘了傳遞數組和傳遞一般的int,double等類型是不一樣的,傳遞數組傳遞的是原數組(有問題),函數的操作就改變了原來的數組,而傳遞一般的數只是傳遞它的拷貝,對原來的數沒有影響

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