為什麼我覺得C語言中二維數組沒用,明明兩個一維數組就能解決,為什麼要有二維數組存在?

石福晉


我也覺得C語言沒用,明明可以用匯編語言解決的,為什麼要用C語言?

你的論點和上面這句話一樣!

二維是來源於數學的平面座標,兩個不同方向的維度,在C裡面的a[x][y]就很清晰地展現二維定位,就如同a(x,y)

所以使用二維數組會更清晰明瞭地展現數據結構,比起你繞著彎用一位數組來模擬二維數組,更容易讓別人清楚你的編程思路。


gzluke


我也來說說。


C語言沒有專門的二維數組

首先,C語言中,基本類型裡有“數組”,也就是一維數組。而我們平時所說的二維數組是元素為數組的數組,其實是一種用一維數組對二維數組的模擬。


一維數組可以解決多維問題

從底層實現來說,無論是一維數組、二維數組還是多維數組,在內存中都是以一維方式排列的。而多維數組也是用一維數組模擬實現的。從這一點來說,一維數組就能解決多維數組的問題。常見的模擬方式:

  • 將 二維數組a[m][n]表示為一維數組a[m*n]

  • 用a[y*n+x]代替a[y][x]

  • 注意這裡是用一個一維數組代替二維數組,而不是用兩個一維數組代替二維數組


多維數組有其存在的必要

從代碼清晰易讀的角度來說,二維數組、多維數組是有意義的。有許多數據是適合用二維數組或多維數組表示的。以適合的方式表示數據,算法的編寫也會簡潔明瞭。典型的適合二維數組表示的數據如平面圖形、矩陣。用二維數組表示,程序清晰易讀;如果用一維數組表示,其可讀性就會低不少。


相對於彙編語言,C提供了一定的數據抽象,如數組、結構體(struct)、聯合(union)。其實沒有這些抽象,程序照樣能編。但C語言的好處就在這裡,它提供的抽象程度,非常適合系統級程序開發和維護。如果覺得C語言提供的抽象程度過高,也許彙編更適合您的項目,如果覺得C語言提供的抽象程度過低,那選擇就多了,從C++,Java到現在的各種新語言,都可以嘗試更換。


和不同


兩條邊的面積等於矩形的面積嗎?


分享到:


相關文章: