數組
的空間分配是固定的,不能是動態的
,象
int
a[10]
,剛開始定義這個數組時就分配給它
10×sizeof(int)
個位元組,不管你能不能用完它都是占這么多內存,但是如果你輸入的數據多於10個,就會溢出,導致錯誤的產生!!!所以請注意!!!
❷ C語言,vc 6.0編譯系統。int型的二維數組的每個元素都佔四個位元組嗎
是的,你理解的完全正確,不管是幾維的,只要類型是int型的,他的每個元素都是佔4個位元組
❸ 在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;
❹ 二維數組所佔用的空間大小(C語言)
我所知道的是定義數組時就要對它進行初始化,也就是要給它賦初值,而二維數組的大小,就要看你是如何給它賦初值的,
❺ 關於c語言二維數組問題,求c語言大神
二維數組的定義
二維數組定義的一般形式是:
類型說明符 數組名[常量表達式1][常量表達式2]
其中常量表達式1表示第一維下標的長度,常量表達式2 表示第二維下標的長度。例如:int a[3][4];
說明了一個三行四列的數組,數組名為a,其下標變數的類型為整型。該數組的下標變數共有3×4個,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]
二維數組在概念上是二維的,即是說其下標在兩個方向上變化,下標變數在數組中的位置也處於一個平面之中,而不是象一維數組只是一個向量。但是,實際的硬體存儲器卻是連續編址的,也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數組,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。
在C語言中,二維數組是按行排列的。即,先存放a[0]行,再存放a[1]行,最後存放a[2]行。每行中有四個元素也是依次存放。由於數組a說明為int類型,該類型占兩個位元組的內存空間,所以每個元素均佔有兩個位元組。
二維數組元素的引用
二維數組的元素也稱為雙下標變數,其表示的形式為:
數組名[下標][下標]
其中下標應為整型常量或整型表達式。例如:
a[3][4]
表示a數組三行四列的元素。
下標變數和數組說明在形式中有些相似,但這兩者具有完全不同的含義。數組說明的方括弧中給出的是某一維的長度,即可取下標的最大值;而數組元素中的下標是該元素在數組中的位置標識。前者只能是常量,後者可以是常量,變數或表達式。
❻ 在C語言中定義二維數組long a[3][5],則數組佔多少位元組的存儲空間
c語言中long佔4個位元組,所以longa[3][5]佔4*3*5=60個位元組
從元素角度理解a代表a[0][0];從二維數組理解a代表a二維數組名,即二維數組首地址;從一維數組角度理解a代表a[0]即二維數組第一行看作一個一維數組,a[0]為這個一維數組的首地址;
a[1]從二維數組看代表a[1][0]是元素,從一維數組角度看代表二維數組第二行的首地址和上面a[0]一樣,
❼ c語言中二維數組元素在內存中的存放由用戶自己確定
樓主,您好,很高興能幫你解決問題。
第一點。數組是連續存儲的空間,不可能指定位置存放,除非那上面已經有值,再進行替換,因為數組是一段連續的空間。其次,實現這個問題建議使用鏈表,因為鏈表會更加地方便。
❽ C語言二維數組中sizeof怎麼用的
sizeof是C語言中的一個運算符,作用是求類型、變數佔用內存空間的大小。sizeof的求值發生在編譯階段,並將求值結果編碼進可執行文件中。
對二維數組使用sizeof即求二維數組佔用的空間,可使用以下公式:
第一維大小(行數) * 第二維大小(列數) * 每個元素佔用的空間(sizeof元素類型)
舉個例子:
#include<stdio.h>
intmain()
{
floata[3][5];
printf("%d ",sizeof(a));
return0;
}
數組a的大小為 3 * 5 * 4 = 60
❾ 二維數組的一個元素在計算機的儲存器中占幾個位元組如果是三維數組的一個元素呢
一個元素在計算機的儲存器中占幾個位元組不是由它是幾維的來決定。
應該由它的元素類型和所使用的編程環境來決定,
例如:
int 的一個元素 在C語言里佔2個位元組,在C++里佔4個位元組
而整個數組的 就用一個的位元組數 乘以 數組中的元素個數就可以啦o(∩_∩)o...