二維數(shù)組怎么看幾行幾列 為什么我覺(jué)得C語(yǔ)言中二維數(shù)組沒(méi)用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?
為什么我覺(jué)得C語(yǔ)言中二維數(shù)組沒(méi)用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?我也來(lái)說(shuō)說(shuō)。C語(yǔ)言沒(méi)有專門的二維數(shù)組首先,C語(yǔ)言中,基本類型里有“數(shù)組”,也就是一維數(shù)組。而我們平時(shí)所說(shuō)的二維數(shù)組是
為什么我覺(jué)得C語(yǔ)言中二維數(shù)組沒(méi)用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?
我也來(lái)說(shuō)說(shuō)。
C語(yǔ)言沒(méi)有專門的二維數(shù)組
首先,C語(yǔ)言中,基本類型里有“數(shù)組”,也就是一維數(shù)組。而我們平時(shí)所說(shuō)的二維數(shù)組是元素為數(shù)組的數(shù)組,其實(shí)是一種用一維數(shù)組對(duì)二維數(shù)組的模擬。
一維數(shù)組可以解決多維問(wèn)題
從底層實(shí)現(xiàn)來(lái)說(shuō),無(wú)論是一維數(shù)組、二維數(shù)組還是多維數(shù)組,在內(nèi)存中都是以一維方式排列的。而多維數(shù)組也是用一維數(shù)組模擬實(shí)現(xiàn)的。從這一點(diǎn)來(lái)說(shuō),一維數(shù)組就能解決多維數(shù)組的問(wèn)題。常見(jiàn)的模擬方式:
將 二維數(shù)組a[m][n]表示為一維數(shù)組a[m*n]
用a[y*n x]代替a[y][x]
注意這里是用一個(gè)一維數(shù)組代替二維數(shù)組,而不是用兩個(gè)一維數(shù)組代替二維數(shù)組
多維數(shù)組有其存在的必要
從代碼清晰易讀的角度來(lái)說(shuō),二維數(shù)組、多維數(shù)組是有意義的。有許多數(shù)據(jù)是適合用二維數(shù)組或多維數(shù)組表示的。以適合的方式表示數(shù)據(jù),算法的編寫(xiě)也會(huì)簡(jiǎn)潔明了。典型的適合二維數(shù)組表示的數(shù)據(jù)如平面圖形、矩陣。用二維數(shù)組表示,程序清晰易讀;如果用一維數(shù)組表示,其可讀性就會(huì)低不少。
相對(duì)于匯編語(yǔ)言,C提供了一定的數(shù)據(jù)抽象,如數(shù)組、結(jié)構(gòu)體(struct)、聯(lián)合(union)。其實(shí)沒(méi)有這些抽象,程序照樣能編。但C語(yǔ)言的好處就在這里,它提供的抽象程度,非常適合系統(tǒng)級(jí)程序開(kāi)發(fā)和維護(hù)。如果覺(jué)得C語(yǔ)言提供的抽象程度過(guò)高,也許匯編更適合您的項(xiàng)目,如果覺(jué)得C語(yǔ)言提供的抽象程度過(guò)低,那選擇就多了,從C ,Java到現(xiàn)在的各種新語(yǔ)言,都可以嘗試更換。