0
A
回答
0
使用C99的variable length array功能。然後根據函數的參數及其大小將它傳遞給函數。
1
在C 1999米的實施方式和用C 2011和支持可變長度數組實現方式中,可以用一個運行時間維度通過聲明函數這種方式傳遞數組:
ReturnType foo(size_t n, ElementType matrix[][n]) …
在調用代碼,在獲得n
後,可以用定義矩陣:
ElementType matrix[n][n];
和可以調用函數:
注:
ReturnType
和ElementType
是您選擇的類型的佔位符。ReturnType
可能是void
。- 要獲得
size_t
的定義,您應該#include <stddef.h>
。 - 你應該這樣定義小數組。大多數C實現爲具有自動存儲持續時間的可變長度數組僅提供有限的空間,並且如果數組太大,則會溢出堆棧。
- 如果您使用GCC進行編譯,您可以使用
-std=c99
或-std=c11
來請求C 1999或C 2011。有關其他選項,請參閱GCC documentation。
如果數組很大,你可以把它定義這種方式來代替:
ElementType (*matrix)[n] = malloc(n * sizeof *matrix);
if (!matrix)
Handle error.
而且以後你必須釋放它:
free(matrix);
如果你的C實現不支持變量長度數組,那麼您可以改爲爲空間分配n*n
元素並手動索引數組(第i
行的元素和第j
列的元素將位於i*n+j
),可能通過編寫一些輔助功能來幫助建立索引。在這種情況下,您可以將數組作爲指向元素類型的簡單指針傳遞給函數,而不是指向元素數組的指針。
相關問題
- 1. 硬時間傳遞二維陣列到功能
- 2. 傳遞二維陣列的功能在朱
- 3. 傳遞二維數組功能在C++
- 4. 從二維陣列到一維陣列?
- 5. 傳遞多個維陣列的功能用C
- 6. C#陣列功能參數傳遞一個維度
- 7. 傳遞結構的陣列功能
- 8. 二維陣列
- 9. 二維陣列
- 10. 二維陣列
- 11. 二維陣列
- 12. 傳遞矩陣功能,C
- 13. 一維到二維陣列的javascript
- 14. 從二維陣列
- 15. 二維陣列VB
- 16. 二維陣列C#
- 17. 傳遞一個二維陣列,以子程序的perl
- 18. 傳遞一個二維數組(2D)的功能VHDL
- 19. C++錯誤傳遞一個二維數組的功能?
- 20. 通過引用功能傳遞二維數組指針
- 21. TXT文件到第二陣列(二維陣列)
- 22. 的Python - 功能不產生相同的二維陣列
- 23. Ç毗連二維陣列的通用功能指針運算
- 24. 陣列JSON對象是未定義當傳遞到功能
- 25. 我如何從功能多輸出傳遞到單元陣列
- 26. 匹配二維陣列與一個二維陣列
- 27. 二維陣列列表java
- 28. PHP重新結構陣列從二維陣列到陣列
- 29. 將兩張二維陣列到另一個陣列二維的Java
- 30. 3維矢量 - 傳遞給功能
如果向我們展示函數聲明,那麼我們很容易告訴您如何將2D數組傳遞給函數。 – haccks