c語言——關於二維數組的初始化問題怎麼解決
二維數組只能在定義的時候初始化,初始化方式如下: char hao[][5]={ {' ',' ','*'}, {' ','*',' ','*'}, {'*',' ',' ',' ','*'}, {' ','*',' ','*'}, {' ',' ','*'} }; //第一維度沒有給出,按初始化的行數,確定數組第一維度。 初始化定義:在
二維數組可以看成特殊的一維數組,每個元素又由一個一維數組組成。今天小編給大家講解一下有關二維數組的一些用法。
材料/工具
電腦
方法
定義二維數組的方法和一維數組相似,如:
聲明時給初始值叫初始化。例如: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的初值個數計算它的第一維長度(
要注意,這個3行3列的二維數組是邏輯上的概念,能形象的表示出行列關係。而在內存中,各元素是連續存放的,不是二維的,是線性的,這點大家一定要清楚。
答案是錯的,正確的是C int a[2][3] = {{1,2},{3,4},{5,6}}; a[2][3]裏面一個{ },就是a[][3]了 所以a[2][3]只能有2個{ } 題目裏有3個{ } 越界了,所以不能初始化的是C
二維數組的初始化,可以分行給元素賦值,如步驟一的圖。
二維數組可以看成特殊的一維數組,每個元素又由一個一維數組組成。 例如:構建一個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
可以對部分元素賦值,例如:
1、要有這樣一個malloc產生的二維數組,或者用New產生的也行。 2、不能按照圖示代碼運行。 3、首先先釋放數組的數組。 4、然後我們再釋放單個數組。 5、然後我們運行就會發現,數組被成功釋放,現在的array地址已經是隨機地址了。
int a[3][3]={{1},{4},{7}};
1、要有這樣一個malloc產生的二維數組,或者用New產生的也行。 2、不能按照圖示代碼運行。 3、首先先釋放數組的數組。 4、然後我們再釋放單個數組。 5、然後我們運行就會發現,數組被成功釋放,現在的array地址已經是隨機地址了。
也可以只對某幾行賦值,例如:
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]是等價的。
如果對全部元素都賦初值,則定義數組時可以對第一維的長度不指定,但第二維的長度不能省去。
初始化就是在定義數組的時候直接給數組賦值: 二維數組初始化的方式如下: 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語言如何讓二維字符數組全部被初始化為同一個值
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]表示即可。追問那還畫矩陣幹嘛追答二維數組中的元素通常以行+列方式訪問,線性訪問的情況很少。