二維數(shù)組只能在定義的時(shí)候初始化,初始化方式如下: char hao[][5]={ {' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} }; //第一維度沒(méi)有給出,按初始化的行數(shù),確定數(shù)組第一維度。 初始化定義:在
二維數(shù)組可以看成特殊的一維數(shù)組,每個(gè)元素又由一個(gè)一維數(shù)組組成。今天小編給大家講解一下有關(guān)二維數(shù)組的一些用法。
材料/工具
電腦
方法
定義二維數(shù)組的方法和一維數(shù)組相似,如:
聲明時(shí)給初始值叫初始化。例如:int b[3][4]={1,2,3,4,5,6,7,8,4,4,4,4}; 聲明后賦值,可以用賦值語(yǔ)句, b[0][0]=1; b[0][1]=2; b[0][2]=3; b[0][3]=4; b[1][0]=5; b[1][1]=6; b[1][2]=7; b[1][3]=8; b[2][0]=4; b[2][1]=4; b[2][2]=4; b[2][3]=
int a[3][3];
1 2 3 4 5 6 7 0 0 Press any key to continue #include using namespace std; main() { int i,j,a[][3]={1,2,3,4,5,6,7}; for (i=0;i
就是定義了一個(gè)3行3列的二維數(shù)組。
首先你要理解二維數(shù)組的真正含義,它的第一維就是一組數(shù)據(jù)的起始地址,第二維就是某組數(shù)據(jù)中的某個(gè)值.其次,你要知道a[][4]所表達(dá)的意思,是指二維數(shù)組a的每一維都是由4個(gè)元素組成的一維數(shù)組.而編譯器可以根據(jù)你賦給a的初值個(gè)數(shù)計(jì)算它的第一維長(zhǎng)度(
要注意,這個(gè)3行3列的二維數(shù)組是邏輯上的概念,能形象的表示出行列關(guān)系。而在內(nèi)存中,各元素是連續(xù)存放的,不是二維的,是線性的,這點(diǎn)大家一定要清楚。
答案是錯(cuò)的,正確的是C int a[2][3] = {{1,2},{3,4},{5,6}}; a[2][3]里面一個(gè){ },就是a[][3]了 所以a[2][3]只能有2個(gè){ } 題目里有3個(gè){ } 越界了,所以不能初始化的是C
二維數(shù)組的初始化,可以分行給元素賦值,如步驟一的圖。
二維數(shù)組可以看成特殊的一維數(shù)組,每個(gè)元素又由一個(gè)一維數(shù)組組成。 例如:構(gòu)建一個(gè)maxrownum*maxrownum的矩陣 long double **data1_bfE; data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *)); for(i=0;i
也可以將所有數(shù)據(jù)寫(xiě)在一個(gè)花括號(hào)內(nèi),按照元素在內(nèi)存中的排列順序?qū)Ω髟刭x初值。但是這種方法一旦數(shù)據(jù)很多,會(huì)寫(xiě)成一大片,容易遺漏,不方便檢查。
你哪些一維數(shù)組都是一樣長(zhǎng)嗎 如果是一樣長(zhǎng),并且長(zhǎng)度是一個(gè)已知常量N,假設(shè)有5個(gè)一維數(shù)組,類型為int int array1[N] int array2[N] int array3[N] int array4[N] int array5[N] 假設(shè)一維數(shù)組是上面的5個(gè)。二維數(shù)組 int array[5][N] for(int i=0;i
可以對(duì)部分元素賦值,例如:
1、要有這樣一個(gè)malloc產(chǎn)生的二維數(shù)組,或者用New產(chǎn)生的也行。 2、不能按照?qǐng)D示代碼運(yùn)行。 3、首先先釋放數(shù)組的數(shù)組。 4、然后我們?cè)籴尫艈蝹€(gè)數(shù)組。 5、然后我們運(yùn)行就會(huì)發(fā)現(xiàn),數(shù)組被成功釋放,現(xiàn)在的array地址已經(jīng)是隨機(jī)地址了。
int a[3][3]={{1},{4},{7}};
1、要有這樣一個(gè)malloc產(chǎn)生的二維數(shù)組,或者用New產(chǎn)生的也行。 2、不能按照?qǐng)D示代碼運(yùn)行。 3、首先先釋放數(shù)組的數(shù)組。 4、然后我們?cè)籴尫艈蝹€(gè)數(shù)組。 5、然后我們運(yùn)行就會(huì)發(fā)現(xiàn),數(shù)組被成功釋放,現(xiàn)在的array地址已經(jīng)是隨機(jī)地址了。
也可以只對(duì)某幾行賦值,例如:
A)int a[ ][3]={20,34,56,78}; //可確定數(shù)組為a[2][3],逐個(gè)賦值,一行3個(gè)數(shù),其余為0 B)int a[2][3]={20,34,56,78};//容易明白 C)int a[2][ ]={20,34,56,78}; //無(wú)法確認(rèn)一行幾個(gè)數(shù),即列數(shù) D)int a[ ][3]={{20,34},{56,78}};//逐行賦值,容易確認(rèn)
int a[3][3]={{1,2},{4}};
定義二維數(shù)組a[x][y],其中x代表行數(shù),y代表列數(shù)。二維數(shù)組在內(nèi)存中線性存放,因此可以線性訪問(wèn)。如a[3][3]的第八個(gè)元素可以用a[0][7]表示,雖然列下標(biāo)越界了,但由于二維數(shù)組線性存放的特點(diǎn),它實(shí)際上和a[2][1]是等價(jià)的。
如果對(duì)全部元素都賦初值,則定義數(shù)組時(shí)可以對(duì)第一維的長(zhǎng)度不指定,但第二維的長(zhǎng)度不能省去。
初始化就是在定義數(shù)組的時(shí)候直接給數(shù)組賦值: 二維數(shù)組初始化的方式如下: int a[3][4]={ {1,1,1,1},{2,2,2,2},{3,3,3,3}}; //給所有的數(shù)組元素賦值 int a[3][4]={ 1,1,1,1,2,2,2,2,3,3,3,3}; //給所有的數(shù)組元素賦值 int a[3][4]={ {1,1},{2,
也可以只對(duì)部分元素賦值,而省略第一維的長(zhǎng)度,但應(yīng)該分行賦值。
只能在定義變量的時(shí)候初始化是比較方便的,過(guò)了那個(gè)村就沒(méi)有那個(gè)店了。也就是只能一個(gè)一個(gè)定義了,當(dāng)然如果有規(guī)律可循的就可以用memset和for循環(huán)的來(lái)做。但看你現(xiàn)在的需求明顯是初始化為一個(gè)沒(méi)規(guī)律的,那就只能一個(gè)一個(gè)賦值了。 初始化時(shí)定義可
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
C語(yǔ)言如何讓二維字符數(shù)組全部被初始化為同一個(gè)值
1、要有這樣一個(gè)抄malloc產(chǎn)生的二維數(shù)組,或者用New產(chǎn)生的也行。
2、不能按照?qǐng)D示代碼運(yùn)行。
3、首先襲先釋放zd數(shù)組的數(shù)組。
4、然后我們?cè)籴尫艈蝹€(gè)數(shù)組。
5、然后我們運(yùn)行就會(huì)發(fā)現(xiàn),數(shù)組被成功釋放,現(xiàn)在的array地址已經(jīng)是隨機(jī)地址了。
[C語(yǔ)言程序設(shè)計(jì)]24.下列選項(xiàng)中不能正確定義并初始化二維數(shù)組的是_____。 A)int a[
A)int a[ ][3]={20,34,56,78}; //可確定數(shù)百組為a[2][3],逐度個(gè)賦值,一行3個(gè)數(shù),其余為0
B)int a[2][3]={20,34,56,78};//容易明白知
C)int a[2][ ]={20,34,56,78}; //無(wú)法確道認(rèn)一行幾個(gè)數(shù),即列數(shù)
D)int a[ ][3]={{20,34},{56,78}};//逐行賦值,容易確認(rèn)追問(wèn)AC還是不太懂,A后面如果補(bǔ)5個(gè)零,那不就變成[3][3]?追答A)int a[ ][3]={20,34,56,78}; //就因?yàn)槎鄠€(gè)78所以是2行,如果沒(méi)78就是一行,c編譯器是按最小占用空間的原則分配
C)int a[2][ ]={20,34,56,78}; //只能確認(rèn)2行,編譯器無(wú)法確認(rèn)一行有幾個(gè)數(shù),即列數(shù)
最簡(jiǎn)單的就是記住二維數(shù)組的列數(shù)是不能空缺,系統(tǒng)自動(dòng)計(jì)算不了
C語(yǔ)言 二維數(shù)組的定義與初始化
B
C
C語(yǔ)言 以下不能對(duì)二維數(shù)組初始化的是( ) A、int a[4][2]={0}; B、char a[][3]={"abc,"def"}; C、int?
選B,B選項(xiàng)就是一個(gè)錯(cuò)誤的表達(dá)方式,數(shù)組的元素應(yīng)該是字符,但是題目上是字符串
c語(yǔ)言里面二維數(shù)組初始化到底怎么整的 我這書(shū)上說(shuō)的是 數(shù)組名[m][n] 如果一個(gè)數(shù)組a[
定義二維數(shù)組百a[x][y],其中x代表行數(shù),y代表列數(shù)度。二維數(shù)組在內(nèi)存中線性存放,因此可以線知性訪問(wèn)。如a[3][3]的第八個(gè)元素可以用a[0][7]表示,雖然列下道標(biāo)越界了,但由于二維數(shù)組線內(nèi)性存放的特點(diǎn)容,它實(shí)際上和a[2][1]是等價(jià)的。更多追問(wèn)追答追問(wèn)沒(méi)懂我就想取出第10個(gè)數(shù) 我輸入a[2][1]當(dāng)然就可以了。但是我的意思是怎么不畫(huà)矩陣就能知道第十個(gè)數(shù)的位置追答若直接以線性方式訪問(wèn)二維數(shù)組a中的第n個(gè)元素,用a[0][n-1]表示即可。追問(wèn)那還畫(huà)矩陣干嘛追答二維數(shù)組中的元素通常以行+列方式訪問(wèn),線性訪問(wèn)的情況很少。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com