回答
知道的列數,並使得只有行動態的數量您可以使用VLA或動態分配。甲VLA是直截了當:
int rows;
// get rows somehow
int table[rows][8];
牢記一個VLA具有自動存儲壽命,並且一旦封閉範圍到期將從尋址存儲器中刪除。他們不能成爲全局變量。
如果你的實現不支持VLA,自動存儲空間是一個問題,或者你需要一個全局變量來達到某種惡意目的,你必須動態管理它(這聽起來像是你想要做的) 。爲了做到這一點,聲明指針至8個元件的陣列,因爲這樣的:
int rows;
// get rows somehow
int (*table)[8] = malloc(rows * sizeof(*table));
其餘部分是直線前進。您可以在0..rows-1中引用table[i][j]
的i
,在0..7中引用j
。只記得在完成時釋放你分配:
free(table);
,不要再引用它。
經過仔細考慮,此方法最適合我的程序需求。 謝謝大家的回答! – theForgottenCoder
我會用這種方法去當尺寸是未知的。
假設數據類型爲int。
int* a; //this will point to your 2D array
分配它,當你知道尺寸(ROW,COL):
a = malloc(sizeof(int)*ROW*COL);
和訪問它像
a[ROW*i + j] = value // equivalent of a[i][j]
ooo這是相當整潔 – theForgottenCoder
是的。 Upvote&接受如果你喜歡:) – brokenfoot
據我所知,你不能有foo[][8]
在C
。您可能能夠通過製造結構和鑄造一個指針結構爲數組周圍破解,所討論的here,但畢竟是有些脆弱的黑客。
你可以做的是改變的行和列的定義,你的問題的空間,因此,爲了訪問行i
,列j
,你會做foo[j][i]
而不是foo[i][j]
。 在這種情況下,你可以宣佈你的陣列是這樣的:<typename> * foo[8]
。
你*可以*擁有它,雖然語法不像你在這裏展示的那樣。它是'type(* foo)[8];'此外,所述變量有效地作爲函數參數聲明爲:'void func(type ar [] [8])''。 – WhozCraig
嗯,我確實說過「據我所知」。我很高興通過發佈這個答案而學到了一些東西。 :) – merlin2011
我認爲當你不能在編譯時傳遞的任何值也不會被創建,我的建議是使用dynamic memory allocation
因爲你不知道有多少行
如果你必須使用二維數組來代替數組列表中你會不得不作出一個陣列
constant i = 1
foo[i][8]
,並要展開陣列
make temp_foo[i][8]
copy foo to temp_foo
delete foo
make foo[i++][8]
copy temp_foo to foo
每次但是,這使混亂。並且我認爲它更好,如果使用鏈表
struct node
{
foo[8]
node *next;
}
將第一要素
node *element_head
element->foo = {add elements}
element->next = null
加入新的元素
node *temp
temp->foo = {add element}
temp->next = element_head
element_head= temp
- 1. 已知數的2D陣列,找到簇
- 2. 如何填充動態2D陣列?
- 3. 如何實現與陣列
- 4. C++矩陣動態2D arrray
- 5. 2D陣列與結構(C++)
- 6. 動態創建動態2D numpy陣列
- 7. C#2D陣列
- 8. 如何實現2D變換矩陣?
- 9. 靜態2D陣列
- 10. 用Haskell's Repa實現2D圓環陣列
- 11. 爲自定義2D陣列實現Parcelable
- 12. 2D陣列的動態分配
- 13. 複製動態分配的2D陣列
- 14. C++ 2D陣列與不同數目的
- 15. 實現一個類對象(C++)的動態創建陣列
- 16. C:shmget與2D陣列
- 17. TicTacToe與2D陣列
- 18. 模板C++分配動態矩陣2D
- 19. C:動態2D矩陣釋放
- 20. C++「動態」陣列
- 21. 分配動態2D字符陣列
- 22. 分配2d動態行到1d陣列
- 23. 動態創建2D陣列紅寶石
- 24. C如何知道函數中2D動態數組的維數?
- 25. 指針C++的2D陣列
- 26. C中的大2d陣列
- 27. 如何使用動態stirng陣列c
- 28. 在2D陣列移動元件對C
- 29. 如何從2D陣列構造的2D陣列
- 30. C#:1d陣列到2d陣列
感謝您提供所有解決方案,我會盡量明天實施其中的一些解決方案,並瞭解哪種解決方案最適合我的應用,並選擇最佳解決方案。謝謝 ! – theForgottenCoder