今天碰到了一維陣列做函式引數的問題,那就扒一扒這個問題:
首先拋結論:
1:c語言中,當一維陣列做函式引數時,編譯器總是把它解析成乙個指向其首元素的指標。
2:實際傳遞的陣列大小與函式形參指定的陣列大小沒有關係。
然後舉例說明:
下面是乙個元素交換函式,把陣列array【i】和array【j】交換位置。注意看陣列是怎麼傳遞給函式的。
正確的寫法1:
解釋說明:編譯器把array解析成指向整形元素的指標,也就是陣列的首位址,方括號中加不加指定數字都可以,因為編譯器根本不看,因此最好不寫,以免引起誤解。
正確寫法2:
解釋說明:這樣寫就更直接明了了,引數是指向整形元素的指標,而陣列的名字又是首元素的位址,也印證了陣列名是指標常量。
可能會有一些同學對 函式中array[i] , array[j]不理解,實際上,array[i] = *(array+i),解釋稱首位址加偏移位址i,就是指向的第i個元素了。
array(i) = (array +i) //這是個指標,指向第i個元素。
array[i] = *(array+i) //這是陣列的第i個元素。
注意()和[ ],別看錯了。
完。
c語言一維陣列做引數傳遞給函式
今天碰到了一維陣列做函式引數的問題,那就扒一扒這個問題 首先拋結論 1 c語言中,當一維陣列做函式引數時,編譯器總是把它解析成乙個指向其首元素的指標。2 實際傳遞的陣列大小與函式形參指定的陣列大小沒有關係。然後舉例說明 下面是乙個元素交換函式,把陣列array i 和array j 交換位置。注意看...
C語言中將二維陣列作為引數傳遞給函式的方法
原文 二維陣列的函式引數傳遞的問題,以前解決過好幾次,總還是忘記,這回總結出來寫在這裡。include 方法1 第一維的長度可以不指定 但必須指定第二維的長度 void print a int a 5 int n,int m 方法2 指向乙個有5個元素一維陣列的指標 void print b int...
C語言二維陣列作為函式引數傳遞
二維陣列中元素排列的順序是按行存放的,即在記憶體中先順序存放第一行的元素,再存放第二行的元素.二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大 明,如 void f int a 3 4 void f int a 4 它們是合法...