1樓:匿名使用者
還是有差別的 雖然大多數時候都可以相互用最大的差別就是指標可以改版變,可以通過指標改變指向內權容的值,但陣列名不行
舉個例子:(分別作為形參)
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等型別是不一樣的,傳遞陣列傳遞的是原陣列,函式的操作就改變了原來的陣列,而傳遞一般的數只是傳遞它的拷貝,對原來的數沒有影響;
還有什麼不懂的繼續交流~~~
2樓:羽葉綠
定義指標p,陣列a[3]=,p=a
其中p的值為a[0]地址,而a[0]的值為1
3樓:淘淘
其實就是沒啥區別,寫法不同。
c語言中關於陣列名作為函式引數方面的問題
不知道你說的第2,4,5語句對應的是什麼。幫你解釋為什麼是1 當你呼叫fun a,b,s 傳進的引數實際上是 a 0 b 0 s變數的值 實際上也就是 a 0 現在我們把fun的形參換個名字 fun int p1,int p2,int p3 進入fun時 p3 s 即p3 a 0 你呼叫malloc...
c語言函式呼叫形參為陣列名的情況
include void sort int a 20 void main sort a 沒問 題bai 我調du試zhi過了 記得dao給回我加分答 c語言函式呼叫方法copy 1 如bai果func是一個已經定義的函式du 2 可以這麼寫zhi daofunc 3 也可以這麼寫,如果func有返回...
C語言中陣列名作為實參傳給被呼叫的函式時,形參獲得的是什麼
在函式中,之所以陣列的值能夠被修改,就是因為形參得到的是陣列的地址,而不是資料,所以,行參獲得的應該是陣列的地址 把陣列作為引數傳遞給函式的時候,並非把整個陣列的內容傳遞進去,此時陣列退化為一個同型別的指標,這個指標的值就是陣列首元素的地址值。c語言中陣列來名作為實參傳給自 被呼叫的函bai數時,形...