通過(guò)對(duì)一維數(shù)組的學(xué)習(xí),我們已經(jīng)能想到,一維數(shù)組是呈線性排布的,如果我們需要比如矩陣這樣的結(jié)構(gòu)時(shí),該怎么辦?一個(gè)最直觀的想法就是每一行都用一個(gè)一維數(shù)組存放,那么有幾行,就需要幾個(gè)一維數(shù)組。等等,還記得上節(jié)課的點(diǎn)與線的關(guān)系嗎?那矩陣這種結(jié)構(gòu)就是線與面的關(guān)系!丹尼斯·里奇同樣為我們提供了二維數(shù)組(多維數(shù)組)這樣的東西,很好地解決了這個(gè)問題。
二維數(shù)組的定義
類型說(shuō)明符 數(shù)組名[行數(shù)][列數(shù)];
例如:
int a[3][4]; /*定義一個(gè)整形二維數(shù)組a,有3行4列共12個(gè)元素分別為: a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] */ char arry[10][10]; //定義一個(gè)字符型二維數(shù)組arry,有10行10列,依次為arry[0][0]~arry[9][9]共100個(gè)元素
二維數(shù)組的初始化
二維數(shù)組可以用以下兩種方式初始化賦值:
int a[3][4]={{1,2,3,4},{10,20,30,40},{100,200,300,400}}; //定義一個(gè)三行四列的二維數(shù)組,按行賦值 int a[3][4]={1,2,3,4,10,20,30,40,100,200,300,400}; //定義一個(gè)三行四列的二維數(shù)組并對(duì)其中的12(3*4)個(gè)元素進(jìn)行賦值
您可能會(huì)想,為什么第二種也可以?這樣的話,定義int a[3][4]和定義int a[12]有什么區(qū)別呢?真相是:二維數(shù)組與一維數(shù)組一樣在內(nèi)存中的存儲(chǔ)也是按照線性排布的。
同樣,建議您親自上機(jī)實(shí)驗(yàn)。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程