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個位元組得到一個整型數字。而引用二級指標時,系統會在指標指向的地址後...