二維陣列名代表什麼

時間 2021-09-11 22:33:37

1樓:豔陽高照的午後

二維陣列本質上是以陣列作為陣列元素的陣列,即“陣列的陣列”。

二維陣列定義:

型別說明符 陣列名[常量表示式][常量表示式]

例如: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[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 個位元組

二維陣列又稱為矩陣,行列數相等的矩陣稱變方陣。對稱矩陣a[i][j] = a[j][i],對角矩陣:n階方陣主對角線外都是零元素。

2樓:匿名使用者

只寫陣列名a代表a陣列的首元素地址 ----------正確

那麼如果有二維陣列int a[3][3]=,,};那陣列名a代表的是什麼,好像並不是首元素地址 ---------這裡的元素事實上是一位陣列,因此a還是首元素地址,只是成了陣列的地址,可以認為是指標的指標

3樓:匿名使用者

主體問題具體對待,有時可以指首地址的!請注意,它卻是一個常量,你不能寫a++,知道嗎?

4樓:匿名使用者

是指向陣列首地址的指標~

c語言中一個二維陣列 它的陣列名是a 那a和*a有什麼區別?

5樓:匿名使用者

對於二維陣列名a和*a,二者的區別在於型別不同。

對於type a[m][n];

當使用a時,可以等同於二級指標type **型。

而使用*a時,等同於type*型。

從概念上說,a表示二維陣列a的首地址,而*a表示二維陣列a第一行a[0]的首地址。這樣在使用的時候就有所區別。比如 對a的操作a[4]表示a的第四行首地址,而對*a的操作(*a)[4]則代表第一行的第4個元素,即a[0][4]。

所以a和*a除了值相同外,其它的各方面都是不同的。

6樓:匿名使用者

資料名可以看作指標常量,分配陣列空間時指標值就確定下來了,不像宣告的指標變數那樣,值是不能改變的。*a=a[0],對於二維陣列a[0]也是一個指標,他們都指向陣列的首地址,值都相等,但是,a和a[0]雖然值相等,但對他們進行指標運算時,地址偏移的基礎不同。

7樓:匿名使用者

其實不大 *a就是a[0]都是第一行的地址

8樓:匿名使用者

有無指標指向的區別。

9樓:匿名使用者

a是這個二維資料首地址,*a是第一個元素值。

為什麼c語言中二維陣列的陣列名a和*a表示的是同一個值?

10樓:匿名使用者

當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首地址。

於是a的值就是首地址的值。

而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。

在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。

於是a和*a的值是相同的。

c 裡一維陣列名,是個指標,那二維陣列名呢

如果把陣列名當作引數傳遞給函式時,那麼編譯器將認為傳遞的是指標。在函式中同樣可以操作該指標,訪問陣列元素,不管它是多少維陣列。比如 int iarray 10 void f1 int p1 如果這樣呼叫f1 iarray 那麼p1 0 等於iarray 0 p1 1 等於iarray 1 以此類推 ...

關於c語言二維陣列陣列名與指標的問題

先說些這個2維陣列 int arr 3 4 可以理解為一個3行四列的矩陣,那麼第一維arr 0 arr 1 arr 2 中存的分別是對應行的地址,也就是說arr 0 存的是一個 大小為4的整形陣列地址 這樣的話就好理解了,arr存的地址值其實與arr 0 本質上是相同的。都是這個連續空間的開始地址。...

二維陣列名為什麼不能直接賦值給二級指標。

二維陣列名相當於指標,但是它是一個指向陣列型別 也就是整型或者字元型,具體取決於你陣列的定義 而二級指標在真正意義上也是一個指標,但它是一個指向指標的指標。在定址時,拿整型陣列舉例,直接引用陣列名,系統會在陣列名指向的地址往後定址2個位元組得到一個整型數字。而引用二級指標時,系統會在指標指向的地址後...