#include
void sizeof(int arr)
int main(void)
; printf("傳入sizeof()函式進行計算:\n");
sizeof(arr);
printf("為傳入sizeof()函式直接在主函式中進行計算:\n");
printf("%d\n",sizeof(arr));
}
在**中可以看到,主函式與sizeof函式執行了同樣的計算。即計算陣列的大小,但是結果卻是始料未及的。
出現這樣的結果其原因就是在函式中,當陣列作為形式引數進行傳參時,其意義發生了變化。將其解析為乙個指標,而指標的大小為四個位元組。此時將陣列作為乙個指標型別進行計算。
C C 中陣列作為函式形參後退化為指標
最近寫了乙個函式,把陣列作為了它的引數,在這個函式中用到了這個陣列的長度,按照正常的求長度的方式,應該不會出錯 但是執行之後發現結果卻不是我想要的。於是寫了乙個測試程式來驗證我的猜想,驗證陣列做函式形參是否會退化為指標。include using namespace std void sort in...
c 陣列做為形參時 該引數退化為指標
當陣列做為函式的形參的時候,該引數退化為指標,並且是無法直接求得陣列的大小。傳陣列給乙個函式,陣列型別自動轉換為指標型別,因而傳的實際是位址。void func int array 10 void func int array void func int array 所以以上三種函式宣告完全等同。實...
陣列名作為函式引數時,退化為指標
陣列名作為函式引數時,退化為指標 func char str 100 函式中陣列名作為函式形參時,在函式體內,陣列名失去了本身的內涵,僅僅只是乙個指標 在失去其內涵的同時,它還失去了其常量特性,可以作自增 自減等操作,可以被修改。陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址 在c...