我有一個1D數組已被動態分配,我想指向一個雙指針(** ptr),然後將ptr當作一個二維數組,但爲此,應該設置二維數組的寬度,有沒有辦法做到這一點。例如,如果我有一個尺寸爲80的陣列,我想將其視爲一個8 * 10的2D陣列,這樣((ptr)+1)將移動10個單位。我知道我可以手動使用它作爲arr [i row + j],但我寧願以另一種方式做它。謝謝你的幫助!!!如何在c中設置指針的寬度?
0
A
回答
3
重新解釋一個一維數組作爲使用指針二維數組:
Type a[80];
Type (*b)[10] = (Type (*)[10])a;//or simply (void*)a. b is pointer to Type[10]
使用b[i][j]
注: 雙指針(等作爲**ptr
)基本上是錯誤。通常,該數組不是指針數組。
另外int col = 10; Type (*b)[col] = (Type (*)[col])a;
作爲VLA(可變長度陣列)自C99(c11的選項)以來可能。
+0
[DEMO](http://ideone.com/w2Lrcm) – BLUEPIXY
1
除了TYPE*
對象之外,您從不指向TYPE**
。您沒有任何TYPE*
對象。一組TYPE
不是其中之一。除了之外,您還可以分配TYPE*
的數組,並且將前者的每個元素排列爲指向後者的相關元素。
TYPE* elements = malloc (N_rows * N_cols * sizeof(TYPE));
TYPE** rows = malloc (N_rows * sizeof(TYPE*));
for (i = 0; i < N_rows; ++i)
rows[i] = elements + N_cols * i;
然而,這是非常低效和不方便的。如果其中一個維度是編譯時常量,或者您可以使用VLA,則可以在不使用任何雙引用的情況下執行此操作(詳細信息請參閱其他答案,以便我不再重複)。
相關問題
- 1. 如何在c#中設置寬度和高度位圖?
- 2. 如何設置ExpandableListView的指標圖標的寬度和高度?
- 3. C++設置空指針?
- 4. 如何設置QWidget寬度?
- 5. 如何設置BarChartDataSet寬度
- 6. 如何設置寬度H:selectOneRadio
- 7. 如何設置datagridview中列的寬度
- 8. 如何設置jqModal的高度寬度?
- 9. 如何爲iPhone SDK中的速度計指針設置動畫?
- 10. 如何設置元素的寬度等於設備寬度?
- 11. 如何在C中將結構指針設置爲NULL?
- 12. 如何將指針設置爲C#中Datagridview中的當前行
- 13. 如何在C#中使用MeasureString來設置表列寬度?
- 14. 如何在C#中使用EPPlus設置xlsx單元格寬度
- 15. 如何在保留寬高比的情況下在回形針中設置最大寬度或高度
- 16. 如何在AS3中設置我的swf的寬度和高度?
- 17. 需要在我的printf轉換規範上設置字段寬度的指針
- 18. jQuery - 如何設置寬度在增加?
- 19. 如何設置寬度爲100%,在WPF
- 20. 如何在seaborn barplot上設置寬度
- 21. 如何設置ostream的指數字段的寬度?
- 22. 無法將指針位置設置爲C++中另一個指針位置的指針位置
- 23. 如何在knitr中設置圖的寬度/高度?
- 24. 在Android中,如何設置ListView項目的高度和寬度?
- 25. 如何在java代碼中設置Mapview的寬度和高度?
- 26. 如何在HTML表格中設置Tbody的寬度和高度
- 27. 如何在HTML中將div的寬度/高度設置爲100%
- 28. 如何在fabricjs中設置svg的寬度和高度?
- 29. 如何查找滑塊的大拇指以設置其寬度
- 30. D3 Sunburst。如何設置不同的戒指\等級寬度
'輸入a [80];類型(* b)[10] =(類型(*)[10])a;'使用'b [i] [j]'。 – BLUEPIXY
我可以使用col等變量替換10嗎? (感謝答案btw)。 –
在這個問題中,術語'寬度'和'雙'是不明確的。在C語言環境中,它們通常被理解爲具有不同於此處所設想的含義。在這個問題中你可能很清楚你的意思,但標題本身就是誤導。 – Clifford