2017-09-19 48 views

回答

0

它是數組值的副本獲取傳遞或數組地址(引用)傳遞?

技術上,既不。在C函數中,參數總是按值傳遞。在數組(變量)作爲函數參數傳遞的情況下,它會衰減到指向數組的第一個元素的指針。像往常一樣,該指針然後通過值傳遞。然而,就像任何其他指針類型參數一樣,如果從被調用的函數改變指針指向的任何值(或者,通過指針算術的派生指針,只要您保持在有效範圍內),則調用者函數內的實際數組元素值也受到影響。

1

當陣列被作爲參數傳遞給它的功能是隱式地衰減到pointes的例如通過

char * foo(char buffer[]) 
{ 
printf("sizeof buff= %d",buffer); // here you will get pointer size not original buf because buffer is decay to pointer as char *buffer 

} 

int main() 
{ 
char buf[10]="hello"; 
foo(buf); 

} 

之所以它衰減到指針是時間。它是用於複製所有元件更昂貴數組到調用函數參數。所以它隱含地衰減指針。