1. c語言中二維數組在內存中是按什麼優先存放的
C語言中
二維數組是按行優先存儲的
即 在內存中存一個二維數組時 先把數組中第一行的數組元素存完 再接著存下一行的 直到存完。
ps:定義一個二維數組 如 int a[m][n] 該數組為m行 n列的矩陣,在內存中 這樣順序存的:
a[0][0] a[0][1] ... a[0][n-1] a[1][0] a[1][1]...
不知道是不是幫到你的忙了
望採納
2. 二維數組元素的存放順序在C語言中是按行排列還是按列
按行,其實在內存中的數據就為一行,a[0][n]後是a[1][0]。以此類推~
3. 在C語言中,二維數組元素在內存中的存放順序是____。(
在c語言里二維數組元素在內存中是按行存放的。
二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t;
按「列優先順序」存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t;
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。
(3)c語言二維碼存放順序擴展閱讀
C++動態二維數組:
以整形為例,row為行數,col為列數
int **data;//存儲二維數組的指針(指向指針的指針。date=x[0][0]的地址。這樣標會更好。因為sizeof(date)結果為4不可能存下二維數組)。
//以下實現如何申請內存
data = new int *[row];
for (int k = 0; k < row; k++)
{
data[k] = new int[col];
}
//賦值跟普通二維數組一樣 例如
data[0][0] = 5; //將二維數組1行1列(C++中稱為0行0列)賦值為5
//刪除內存
for (int i = 0 ; i < row; ++i)
{
delete [] data[i]; //此處的[]不可省略
}
delete [] data;
4. 在C語言中,二維數組元素在內存中的存放順序是 A按行存放 B按列存放 C由用戶自己定義 D由編譯器決定
c語言中,二維數組元素在內存中是按行存放的。
二維數組本質上是以數組作為數組元素的數組,即「數組的數組」,類型說明符 數組名[常量表達式][常量表達式]。二維數組在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在數組中的位置也處於一個平面之中, 而不是象一維數組只是一個向量。
但是,實際的硬體存儲器卻是連續編址的, 也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數組,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維數組是按行排列的。
例如:float a[3][4],b[5][10]; 定義a為3*4(3行4列)的數組,b為5*10(5行10列)的數組。注意,不能寫成 float a[3,4],b[5,10]; 具體可以表示:a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} }
(4)c語言二維碼存放順序擴展閱讀:
1、表示方法:
數組元素也是一種變數, 其標識方法為數組名後跟一個下標。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。
2、賦值方法:
初始化賦值的一般形式為:static類型說明符數組名[常量表達式]={值,值……值}; 其中static表示是靜態存儲類型, C語言規定只有靜態存儲數組和外部存儲數組才可作初始化賦值。在{ }中的各數據值即為各元素的初值, 各值之間用逗號間隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當於a[0]=0;a[1]=1...a[9]=9;
3、使用規則:
一、數組的類型實際上是指數組元素的取值類型。對於同一個數組,其所有元素的數據類型都是相同的。
二、數組名的書寫規則應符合標識符的書寫規定。
三、數組名不能與其它變數名相同。
四、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
五、只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
六、若不給可初始化的數組賦初值,則全部元素均為0值。
七、假如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5}; 可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
參考資料來源:網路-二維數組
網路-數組