1
A
回答
1
這兩個可能被用來聲明2維數組。
在第一種情況下,25個int元素被分配在內存中的連續區域中。 在這種情況下,表達式a[i][j]
被編譯器翻譯爲*(a + i*5 + j)
。
第二個分配5個指針到int
。您可以通過分配int
的向量並使這些指針指向這些向量來使其作爲二維數組工作。 在這種情況下,a[i][j]
表示獲得指向a[i]
指向的指針,然後查找該向量中的第5個元素。即a[i][j]
被翻譯爲*(a[i] + j)
。
請注意,在第二種情況下,行不必具有相同的長度。
0
- 第一個聲明二維數組(數組數組)。
- 第二個聲明指向可用作多維數組的int的指針數組。
0
int a[5][5];
說,編譯器應該分配足夠的內存來存儲25個整數,並把它當作一個二維數組稱爲a
。
int* a[5];
表示編譯器應該分配足夠的內存來存儲指向整數的5個指針,並將其視爲指向數組的指針a
。要實際使用它作爲一個二維數組,你將不得不分配更多的內存並初始化這些指針來指向它。例如:
int * a[5];
for(int i = 0; i < 5; i++){ a[i] = malloc(sizeof(int) * 5); }
不知道您的要求,很難說哪一個更適合您。第二個允許你有效地交換兩行,通常更靈活,但需要更多的代碼來分配和釋放數據結構。
0
哪個更好的蘋果或橙子? 此符號int a[ROWS][COLS]
用於創建尺寸在聲明時已知的矩形2D陣列。
1 2 3 4
4 6
7 1 1 1 5 6 7
9
相關問題
- 1. 聲明指針數組字符數組
- 2. 指針和多維數組
- 3. java多維數組聲明1 * 3維?
- 4. 如何聲明指向int數組的指針數組?
- 5. 與數組指針的聯合聲明?
- 6. 排序多維數組無指針
- 7. 陣列指針到多維數組
- 8. 初始化多維數組指針****
- 9. Java多維數組。空指針
- 10. 多維數組和C++中的指針?
- 11. 混淆指針和多維數組
- 12. 二維數組指針
- 13. 二維數組和指針
- 14. 指針的二維數組
- 15. 指針二維數組
- 16. 指針二維數組
- 17. 在C++中聲明指向二維數組的內部二維數組的指針
- 18. 多維數組和指向指針的指針
- 19. 聲明在一個聲明多維數組
- 20. K&R練習:將多維數組插入指針數組
- 21. 聲明,分配和分配指向函數指針的指針數組
- 22. 聲明多維數組的值true或false
- 23. 回聲多維數組
- 24. 在傳遞函數時使用多指針數組中的指針或聲明的警告
- 25. 指向一維數組的雙指針
- 26. 如何聲明指向另一個數組元素的指針數組
- 27. 唔明多維數組
- 28. 將指針或指針數組存儲在動態數組中
- 29. 如何聲明指向數組的指針?
- 30. 聲明指向數組的指針時是否需要括號?
: 而當列的數目是未知的,在2D陣列聲明時間或列的數目可以在運行時改變或僅僅一個想要創建非矩形(鋸齒狀)陣列這樣這個
int * a[ROWS]
符號用於你可能會發現http://cdecl.org/用於'解碼'複雜的C聲明。 – nimrodm[Is int * array \ [32 \]指向32個int的數組或指向int的32個指針的數組的可能重複?這是否重要?](http://stackoverflow.com/questions/1371898/is-int-array32-a-pointer-to-an-array-of-32-ints-or-an-array-of-32-指針-t) –
相關問題:http://stackoverflow.com/q/7586702/51831 – jpalecek