我想知道,當一個數組傳遞給c中的函數。它是數組值的副本獲得通過或數組地址(引用)傳遞?將數組傳遞給c中的函數時傳遞什麼?數組值或引用地址的副本?
-1
A
回答
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);
}
之所以它衰減到指針是時間。它是用於複製所有元件更昂貴數組到調用函數參數。所以它隱含地衰減指針。
相關問題
- 1. C++將2d數組傳遞給函數
- 2. 將[out]數組傳遞給C++函數
- 3. 將數組傳遞給函數C
- 4. C++將char數組傳遞給函數
- 5. 將數組傳遞給函數c
- 6. 將數組傳遞給函數c
- 7. 將數組值傳遞給函數
- 8. C中傳遞數組通過引用或值的函數
- 9. 爲什麼要將指針的地址傳遞給函數C
- 10. 將特定數組元素的地址傳遞給函數
- 11. C++將值傳遞給函數中的二維字符數組
- 12. 如何將數組中的值傳遞給構造函數? C++
- 13. PostgreSQL中的聚合函數將數組傳遞給C函數
- 14. C++函數中「傳遞引用」和「傳遞指針/地址」有什麼區別?
- 15. 將數組傳遞給函數參數
- 16. 使用VBA將數組傳遞給網頁中的腳本函數以及從腳本函數傳遞數組
- 17. C++:通過引用將結構數組傳遞給函數
- 18. 通過引用將字符串數組傳遞給C函數
- 19. 將數組引用傳遞給scala中的函數
- 20. 傳遞數組而不是副本c#
- 21. C++將數組傳遞到函數中
- 22. 如何將常量數組或變量數組傳遞給C中的函數?
- 23. 將字節數組傳遞給函數
- 24. 將ejs數組傳遞給javascript函數
- 25. 將數組傳遞給函數
- 26. 將POST數組傳遞給php函數
- 27. 將多維數組傳遞給函數
- 28. 將多維數組傳遞給函數?
- 29. 將數組傳遞給函數php
- 30. 將數組傳遞給函數
當您將數組傳遞給C中的函數時,會傳遞第一個變量的地址。 – VatsalSura
傳遞給函數的數組會衰減爲指向其第一個元素的指針。 –
數組的基地址已通過 – Rafal