1樓:春秋戰甲
按行,其實在記憶體中的資料就為一行,a[0][n]後是a[1][0]。以此類推~
在c語言中,二維陣列元素在記憶體中的存放順序是____。(
2樓:非常可愛
在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 個位元組。
擴充套件資料
c++動態二維陣列:
以整形為例,row為行數,col為列數
int **data;//儲存二維陣列的指標(指向指標的指標。date=x[0][0]的地址。這樣標會更好。因為sizeof(date)結果為4不可能存下二維陣列)。
//以下實現如何申請記憶體
data = new int *[row];
for (int k = 0; k < row; k++)
//賦值跟普通二維陣列一樣 例如
data[0][0] = 5; //將二維陣列1行1列(c++中稱為0行0列)賦值為5
//刪除記憶體
for (int i = 0 ; i < row; ++i)
delete data;
3樓:進理秦剛捷
自己用vc++6.0作了測試,**如下:
輸出結果如下:
可見,此二維陣列在記憶體中按照如下順序存放:
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
4樓:匿名使用者
在c語言中,二維陣列元素在記憶體中的存放順序是(按行存放)即在記憶體中線順序存放第一行的元素,再存放第二行的元素。
5樓:友人改變自己
在c語言中,二維陣列元素在記憶體中的存放順序是 先行後列。
在c語言中,二維陣列元素在記憶體中的存放順序是 a按行存放 b按列存放 c由使用者自己定義 d由編譯器決定
6樓:鬱筱羽
二維陣列在記憶體中按行存放。
二維陣列在c語言中的定義為:int a[x][y]。具體理解為二維陣列a,有x行資料,每行資料有y個。
解釋:當我們在進行資料的存取時,在無x的條件下不可能取出值。但是在沒有y的條件下,可以通過地址取出x行的某個值。
當我們知道x的值,代表我們能確定這一行的首地址,因為二維陣列按照行存放,所以第x行的資料地址關係排列遞增的。
反證法:如果二維陣列按列存放,則我們知道y值,可以確定首地址的值,去進行值得存取。顯然由於c語言不支援這樣的方式,所以c語言中二維陣列按照行存放。
7樓:喵星球的大橘
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、表示方法:
陣列元素也是一種變數, 其標識方法為陣列名後跟一個下標。下標表示了元素在陣列中的順序號。陣列元素的一般形式為:
陣列名[下標] 其中的下標只能為整型常量或整型表示式。如為小數時,c編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的陣列元素。
陣列元素通常也稱為下標變數。必須先定義陣列, 才能使用下標變數。
2、賦值方法:
初始化賦值的一般形式為:static型別說明符陣列名[常量表示式]=; 其中static表示是靜態儲存型別, c語言規定只有靜態儲存陣列和外部儲存陣列才可作初始化賦值。在中的各資料值即為各元素的初值, 各值之間用逗號間隔。
例如:static int a[10]=; 相當於a[0]=0;a[1]=1...a[9]=9;
3、使用規則:
一、陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。
二、陣列名的書寫規則應符合識別符號的書寫規定。
三、陣列名不能與其它變數名相同。
四、可以只給部分元素賦初值。當中值的個數少於元素個數時,只給前面部分元素賦值。例如:
static int a[10]=;表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
五、只能給元素逐個賦值,不能給陣列整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]=;而不能寫為:
static int a[10]=1;(請注意:在c、c#語言中是這樣,但並非在所有涉及陣列的地方都這樣,資料庫是從1開始。)
六、若不給可初始化的陣列賦初值,則全部元素均為0值。
七、假如給全部元素賦值,則在陣列說明中, 可以不給出陣列元素的個數。例如:static int a[5]=; 可寫為:
static int a=;動態賦值可以在程式執行過程中,對陣列作動態賦值。這時可用迴圈語句配合scanf函式逐個對陣列元素賦值。
8樓:匿名使用者
答案為a。
關於c語言中的陣列存放順序是這樣的:
假設有陣列如下:
int x=;
char ca[5]=;
陣列名即代表陣列的地址,陣列的地址==陣列名(ca)==陣列的首元素的地址&ca[0]
在記憶體中,記憶體從大到小進行定址,為陣列分配了儲存空間後,陣列的元素自然的從上往下排列儲存,整個陣列的地址為首元素的地址。
模擬該陣列的記憶體儲存細節如下:
注意:字元在記憶體中是以對應ascii值的二進位制形式儲存的,而非上表的形式。
在這個例子中,陣列x的地址為它的首元素的地址0x08,陣列ca的地址為0x03。
在二維陣列中a[y][x],其中x下標表示的是行,y下標表示的是列,而看上圖,是以x下標為優先順序儲存的,因此,答案是a:按行存放。
9樓:匿名使用者
#include
int main(),};
for (int i = 0; i < 2; i++)}return 0;
}輸出結果:
a[0][0] 的地址
0028fef8
a[0][1] 的地址 0028fefc
a[1][0] 的地址 0028ff00
a[1][1] 的地址 0028ff04
process returned 0 (0x0) execution time : 0.657 s
press any key to continue.
懂了嗎?
10樓:風信標
當然是按行存放,而且是緊密存放
c語言中二維陣列在記憶體中是按什麼優先存放的?
11樓:二蛋的哥哥哥
c語言中
二維陣列是按行優先儲存的
即 在記憶體中存一個二維陣列時 先把陣列中第一行的陣列元素存完 再接著存下一行的 直到存完。
ps:定義一個二維陣列 如 int a[m][n] 該陣列為m行 n列的矩陣,在記憶體中 這樣順序存的:
a[0][0] a[0][1] ... a[0][n-1] a[1][0] a[1][1]...
不知道是不是幫到你的忙瞭望採納
12樓:匿名使用者
比如a[2][3];的存放順序是:
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
13樓:米呀你
c語言陣列是行優先的
在c語言中,二維陣列中元素的存放順序是
14樓:匿名使用者
和以為陣列一樣吧,一個個存放,第一行存放完了,緊接著存放第二行,所以 c語音裡面,多維陣列和一維陣列的存放沒有區別的
15樓:匿名使用者
和一維陣列一樣吧,一個個存放,第一行存放完了,緊接著存放第二行,所以 c語言裡面,多維陣列和一維陣列的存放沒有區別的
c語言中二維陣列在記憶體中是按什麼優先存放的?
16樓:二蛋的哥哥哥
c語言中
二維陣列是按行優先儲存的
即 在記憶體中存一個二維陣列時 先把陣列中第一行的陣列元素存完 再接著存下一行的 直到存完。
ps:定義一個二維陣列 如 int a[m][n] 該陣列為m行 n列的矩陣,在記憶體中 這樣順序存的:
a[0][0] a[0][1] ... a[0][n-1] a[1][0] a[1][1]...
不知道是不是幫到你的忙瞭望採納
c語言二維陣列怎麼表示,C語言二維陣列定義是什麼,然後int a 1 2 是代表什麼意思?怎麼用這個二維陣列
int a m n 就表示一個m行n列的整型二維陣列在c語言中陣列的下標是從0開始的所以,內陣列a的元素個數可以表示為 容a 0 0 a m 1 n 1 例如 include int main return 0 執行結果 1 23 4 4 51 2 3 44 5 int a 3 2 定義的是陣列ba...
C語言二維陣列問題
一維陣列,a表示的就是首元素的地址,a就是首元素。再看二維陣列,二維陣列如a 2 2 兩行兩列。是a 0 0 a 0 1 a 1 0 a 1 1 它不是一維陣列,但可以用一維陣列表示。a i a i a i a i 0 這幾個值是相等的,但意義不同,a i表示第i行的首地址,指向行。a i a i ...
求C語言程式設計 呼叫函式計算二維陣列所有元素的平均值
直接用a i j 最簡單,注意s必須每次置零。非要用指標的話,應該用一個指向陣列的指標,而不是一個裝了指標的陣列 求二維陣列每行元素的平均值。要求用函式和指標實現 include void fun int a 3 4 int main 已改,看註釋 void fun int a 3 4 int ma...