c語言——關於二維陣列的初始化問題怎麼解決

來源:趣味經驗館 2.07W

二維陣列只能在定義的時候初始化,初始化方式如下: char hao[][5]={ {' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} }; //第一維度沒有給出,按初始化的行數,確定陣列第一維度。 初始化定義:在

二維陣列可以看成特殊的一維陣列,每個元素又由一個一維陣列組成。今天小編給大家講解一下有關二維陣列的一些用法。

c語言——關於二維陣列的初始化問題怎麼解決

材料/工具

電腦

方法

定義二維陣列的方法和一維陣列相似,如:

宣告時給初始值叫初始化。例如:int b[3][4]={1,2,3,4,5,6,7,8,4,4,4,4}; 聲明後賦值,可以用賦值語句, 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

就是定義了一個3行3列的二維陣列。

首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始地址,第二維就是某組資料中的某個值.其次,你要知道a[][4]所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度(

c語言——關於二維陣列的初始化問題怎麼解決 第2張

要注意,這個3行3列的二維陣列是邏輯上的概念,能形象的表示出行列關係。而在記憶體中,各元素是連續存放的,不是二維的,是線性的,這點大家一定要清楚。

答案是錯的,正確的是C int a[2][3] = {{1,2},{3,4},{5,6}}; a[2][3]裡面一個{ },就是a[][3]了 所以a[2][3]只能有2個{ } 題目裡有3個{ } 越界了,所以不能初始化的是C

c語言——關於二維陣列的初始化問題怎麼解決 第3張

二維陣列的初始化,可以分行給元素賦值,如步驟一的圖。

二維陣列可以看成特殊的一維陣列,每個元素又由一個一維陣列組成。 例如:構建一個maxrownum*maxrownum的矩陣 long double **data1_bfE; data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *)); for(i=0;i

也可以將所有資料寫在一個花括號內,按照元素在記憶體中的排列順序對各元素賦初值。但是這種方法一旦資料很多,會寫成一大片,容易遺漏,不方便檢查。

你哪些一維陣列都是一樣長嗎 如果是一樣長,並且長度是一個已知常量N,假設有5個一維陣列,型別為int int array1[N] int array2[N] int array3[N] int array4[N] int array5[N] 假設一維陣列是上面的5個。二維陣列 int array[5][N] for(int i=0;i

c語言——關於二維陣列的初始化問題怎麼解決 第4張

可以對部分元素賦值,例如:

1、要有這樣一個malloc產生的二維陣列,或者用New產生的也行。 2、不能按照圖示程式碼執行。 3、首先先釋放陣列的陣列。 4、然後我們再釋放單個數組。 5、然後我們執行就會發現,陣列被成功釋放,現在的array地址已經是隨機地址了。

int a[3][3]={{1},{4},{7}};

1、要有這樣一個malloc產生的二維陣列,或者用New產生的也行。 2、不能按照圖示程式碼執行。 3、首先先釋放陣列的陣列。 4、然後我們再釋放單個數組。 5、然後我們執行就會發現,陣列被成功釋放,現在的array地址已經是隨機地址了。

c語言——關於二維陣列的初始化問題怎麼解決 第5張

也可以只對某幾行賦值,例如:

A)int a[ ][3]={20,34,56,78}; //可確定陣列為a[2][3],逐個賦值,一行3個數,其餘為0 B)int a[2][3]={20,34,56,78};//容易明白 C)int a[2][ ]={20,34,56,78}; //無法確認一行幾個數,即列數 D)int a[ ][3]={{20,34},{56,78}};//逐行賦值,容易確認

int a[3][3]={{1,2},{4}};

定義二維陣列a[x][y],其中x代表行數,y代表列數。二維陣列在記憶體中線性存放,因此可以線性訪問。如a[3][3]的第八個元素可以用a[0][7]表示,雖然列下標越界了,但由於二維陣列線性存放的特點,它實際上和a[2][1]是等價的。

c語言——關於二維陣列的初始化問題怎麼解決 第6張

如果對全部元素都賦初值,則定義陣列時可以對第一維的長度不指定,但第二維的長度不能省去。

初始化就是在定義陣列的時候直接給陣列賦值: 二維陣列初始化的方式如下: int a[3][4]={ {1,1,1,1},{2,2,2,2},{3,3,3,3}}; //給所有的陣列元素賦值 int a[3][4]={ 1,1,1,1,2,2,2,2,3,3,3,3}; //給所有的陣列元素賦值 int a[3][4]={ {1,1},{2,

也可以只對部分元素賦值,而省略第一維的長度,但應該分行賦值。

只能在定義變數的時候初始化是比較方便的,過了那個村就沒有那個店了。也就是隻能一個一個定義了,當然如果有規律可循的就可以用memset和for迴圈的來做。但看你現在的需求明顯是初始化為一個沒規律的,那就只能一個一個賦值了。 初始化時定義可

c語言——關於二維陣列的初始化問題怎麼解決 第7張

擴充套件閱讀,以下內容您可能還感興趣。

C語言如何讓二維字元陣列全部被初始化為同一個值

1、要有這樣一個抄malloc產生的二維陣列,或者用New產生的也行。

2、不能按照圖示程式碼執行。

3、首先襲先釋放zd陣列的陣列。

4、然後我們再釋放單個數組。

5、然後我們執行就會發現,陣列被成功釋放,現在的array地址已經是隨機地址了。

[C語言程式設計]24.下列選項中不能正確定義並初始化二維陣列的是_____。 A)int a[

A)int a[ ][3]={20,34,56,78}; //可確定數百組為a[2][3],逐度個賦值,一行3個數,其餘為0

B)int a[2][3]={20,34,56,78};//容易明白知

C)int a[2][ ]={20,34,56,78}; //無法確道認一行幾個數,即列數

D)int a[ ][3]={{20,34},{56,78}};//逐行賦值,容易確認追問AC還是不太懂,A後面如果補5個零,那不就變成[3][3]?追答A)int a[ ][3]={20,34,56,78}; //就因為多個78所以是2行,如果沒78就是一行,c編譯器是按最小佔用空間的原則分配

C)int a[2][ ]={20,34,56,78}; //只能確認2行,編譯器無法確認一行有幾個數,即列數

最簡單的就是記住二維陣列的列數是不能空缺,系統自動計算不了

C語言 二維陣列的定義與初始化

B

C

C語言 以下不能對二維陣列初始化的是( ) A、int a[4][2]={0}; B、char a[][3]={"abc,"def"}; C、int?

選B,B選項就是一個錯誤的表達方式,陣列的元素應該是字元,但是題目上是字串

c語言裡面二維陣列初始化到底怎麼整的 我這書上說的是 陣列名[m][n] 如果一個數組a[

定義二維陣列百a[x][y],其中x代表行數,y代表列數度。二維陣列在記憶體中線性存放,因此可以線知性訪問。如a[3][3]的第八個元素可以用a[0][7]表示,雖然列下道標越界了,但由於二維陣列線內性存放的特點容,它實際上和a[2][1]是等價的。更多追問追答追問沒懂我就想取出第10個數 我輸入a[2][1]當然就可以了。但是我的意思是怎麼不畫矩陣就能知道第十個數的位置追答若直接以線性方式訪問二維陣列a中的第n個元素,用a[0][n-1]表示即可。追問那還畫矩陣幹嘛追答二維陣列中的元素通常以行+列方式訪問,線性訪問的情況很少。

熱門標籤