1樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首位址。
於是a的值就是首位址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首位址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首位址,第一行的首位址,和第乙個元素的首位址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
2樓:匿名使用者
當a是二維陣列名時,a即&a[0],而*a即a[0]
兩者的顯式的值是相同的,但是基型別是不同的
3樓:匿名使用者
*a表示陣列的第乙個元素的值,而二維陣列的第乙個元素是乙個一維陣列。這個一維陣列的首位址是a[0],所以a = *a = a[0] = &a[0][0]
4樓:艾珽
首先 a[0] 和 *(a+0)等價,且 a[i]只是乙個位址(如同一維陣列名 只是乙個指標常量)
這些你得知道。
在a[m]中,
a為二維陣列名,值為0行首位址;
a[0] 和 *a 為 0行0列的位址。
*(a[i]+j)和*(*(a+i)+j) 才是 a[i][j]的值。
為什麼c語言中二維陣列的陣列名a和*a表示的是同乙個值?
5樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首位址。
於是a的值就是首位址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首位址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首位址,第一行的首位址,和第乙個元素的首位址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
c語言中乙個二維陣列 它的陣列名是a 那a和*a有什麼區別?
6樓:匿名使用者
對於二維陣列名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除了值相同外,其它的各方面都是不同的。
7樓:匿名使用者
資料名可以看作指標常量,分配陣列空間時指標值就確定下來了,不像宣告的指標變數那樣,值是不能改變的。*a=a[0],對於二維陣列a[0]也是乙個指標,他們都指向陣列的首位址,值都相等,但是,a和a[0]雖然值相等,但對他們進行指標運算時,位址偏移的基礎不同。
8樓:匿名使用者
其實不大 *a就是a[0]都是第一行的位址
9樓:匿名使用者
有無指標指向的區別。
10樓:匿名使用者
a是這個二維資料首位址,*a是第乙個元素值。
為什麼c語言二維陣列a[2][2], a和*a輸出是相同的,都表示乙個位址
11樓:自我程式設計
二維陣列可以理解為幾個指向一維陣列的指標組成指標陣列。
所以從型別上講,a是指向指標的指標,*a是指向一行一維陣列的指標。
但a作為陣列名,又表示了陣列首位址(在記憶體中元素位址是連續的)。
*a是第一行陣列首位址。所以值相同
(注意只是值相同,比如a[n]和(*a)[n]意義就不一樣,乙個表示第n行的行指標,乙個是第一行的第n列)。
12樓:天神在此
a指的是這個二維陣列第一維陣列的首位址,即&a[0] (a+1就是&a[1])
*a指的是這個二維陣列的首位址,即&a[0][0] (*a+1就是&a[0][1])
**a指的是這個二維陣列第一維陣列的首位址指向的值,也就是a[0][0]的值,不是指標
a與*a的值是一樣的,因為&a[0]與&a[0][0]是一樣的以下是位址對應關係
a等於&a[0]等於&a[0][0]
a+1等於&a[1]等於&a[1][0]
*a等於&a[0][0]
(*a+1)等於&a[0][1]
*(a+1)等於&a[1][0]
[*(a+1)+1]等於&a[1][1]
c語言中二維陣列a[i][j],為什麼a=*a?
13樓:匿名使用者
在c語言中,二者是相同的位址值。所以可以說a=*a.
二維陣列a定義為a[i][j]時,代表一組資料,有i行j列,共計i*j的元素。
這組資料在記憶體中是連續存放的。而在c語言的使用中,a是二維陣列的首位址。*a也就是a[0],是二維陣列第一行的首位址。
所以,二者是相同的位址值,即資料a[0][0]的位址值。
也就是說,從值上,a,*a, a[0],&a[0][0]都是相同的值。
當時,說a=*a也並不是完全正確的,從型別上,a等同於二維指標,而*a等同於一維指標。二者型別並不相同,只是在一定條件下可以轉換。
14樓:匿名使用者
我理解問題中的這個=樓主是指相等,而且是數值上相等。這是肯定的。*a實際是*(a+0)+0,也即是a[0]+0這個位址,和a一樣,其數值也是這個二維陣列的首位址。
但是二者含義可不同,不能直接相互賦值。a是行指標,即a是乙個大小為i的陣列,其元素也是陣列,大小為j。*a由上面的解釋,其實質是個列指標,指向a的第乙個元素(大小為j的陣列)的第0個元素。
15樓:匿名使用者
#include "stdio.h"
main()
} 正確的寫法應該是上面這樣的。
這裡涉及到2個問題:
1.陣列宣告的時候a[9]就是有9個元素的陣列,a[10]就是有10和元素的陣列
2.陣列賦值的時候第乙個元素的下標是從0開始的,即a[0],最後乙個下標是宣告時的數字-1,如:宣告時:a[9],最後乙個元素是a[8]。a[9]是超範圍的。
16樓:
陣列名a表示二維陣列的首位址,*a就好比第一行的位址值a[0],a[0]表示&a[0][0]....
17樓:匿名使用者
二維陣列的指標比較特別,* 的作用是將行指標轉換成列指標,陣列名a是指向第一行的指標,*a則是指向第一行第一列的指標,根本含義上市不一樣的,但是值都是a【0】【0】的位址
*(a+1)[2] 在c語言中表示什麼意思,其中a 是乙個二維陣列的陣列名,請解
18樓:
是下標為[3][0]的那個元素的值。因為的優先順序比*高,所以*(a+1)[2]被解釋為*((a+1)[2])——二維陣列a中,a是第0行的第0個元素的位址,a+1自然是第1行的第0個元素的位址,(a+1)[2]實際上就是再向後移兩行那一行的元素指標,可用*(a+1+2)=*(a+3)表示,所以是第3行的第0個元素的位址;那麼*(a+1)[2]實質上就是**(a+3),顯然,它是第3行第0個元素。比如有int a[4][4]=,,,},那麼*(a+1)[2]就是13。
行、列下標都從0起算。供參考!
c語言中的二維陣列裡a+1和*(a+1)為什麼都是位址
19樓:劉文正粉絲
二維陣列, int a[10][20];
a是乙個指標的指標, 即二級指標.
乙個指標加乙個數, 當然還是指標(即a+1是指標)
取值乙個二級指標, 是一級指標(即指標), 所以還是指標, 不過型別發生了變化.
a+1的型別為int *[10].
而*(a+1)的型別則為int *, 也就是平常的指標.
如果你學習二維陣列是用心, 你就會知道不存在二維陣列, 二維陣列其實是乙個包含陣列的陣列, 即陣列的每乙個元素還是乙個陣列(這點有點像物件導向的思維).
所以a[0]就是取第乙個元素值, 而第乙個元素是陣列, 所以其值仍是乙個指標.
答了這麼多, 一看問題, 發現是"位址".....位址和指標是乙個東西.
20樓:zh呼嘯而過
例如a[5][10];
a + 1的值是第二行的首位址,
* (a + 1)得值也是第二行的首位址,但是a + 1不等於a[1],而* (a + 1)等於a[1]。
如果給a+1再加1,就是a+1+1,就是a+2,它的值是第三行的首位址
如果給*(a+1)再加1,就是*(a+1)+1,它的值是第二行的第二個位址
他們移動的區別:前者是縱向的,後者是橫向的。
指標型別的區別:兩者均存放為同一位址,但前者是指向一維陣列,後者是指向元素的。
實際就是前者每次跳動4*10個位元組,後者每次跳動4個位元組。
21樓:twinkleh丶
a+1應該是 (a+0)+1
這裡的a是二維陣列中的二級指標
陣列名為a[0]的一維陣列(表示行)
也是陣列名為a的一維陣列(表示列)
後面的1表示行陣列移動1行
0表示列的移動
所以是1行0列的位址
*(a+1)中a是二級指標
取值二級指標是一級指標
一級指標指向的一維陣列(二維陣列中的行)
一維陣列移動一位只能是向下移動也就是行,
所以就是 第一行的首位址 也就等於二維陣列中 第一行零列的位址
22樓:tlier丿殘刀
二維陣列又包含多個一維陣列 a指向第乙個一維陣列的首位址就還是位址
c語言中的二維陣列裡a+1和*(a+1)為什麼相等?
23樓:匿名使用者
它們只是值相等,但型別不相等,不能說它們相等。
a+1是int **型別,指向的是陣列a的第二行的起始位址; *(a+1)是int *型,指向的是陣列a的第二行第乙個元素的位址。
為什麼c語言裡面二維陣列a[][],a,a[0],*a,*(a 0)值相等
24樓:匿名使用者
沒學過c,我猜一下,你定義了乙個二位陣列後,就會有乙個指標指二維陣列的首位址,上面的各種表達樣式都是說明的這個指標,而沒有改變這個指標的指向,所以值是相同的
c語言中二維陣列名是不是可以看作指標陣列名
不可以,二維陣列要看做 陣列的陣列 以如下定義為例 int a 4 int p 給你個對於指標和陣列的正確理解吧 定義的不同 c 裡,指標和陣列是不同的型別,不要把陣列名看做 常指標 所以 sizeof a 和 sizeof p 值是不同的。操作 除宣告外,中括號操作符僅用於指標,如 p 0 p 5...
二維陣列名和指標的關係,C語言中陣列名和指標的區別
二維陣列名即陣列地址,指向首行地址,表面上看,行地址即一維陣列指標,而陣列名指向行就應該是指標的指標,但是必須注意指標也是有型別的,型別不同資料寬度也不同。如果a 10 10 假設int p a 那麼要對行遞增執行p 時,編譯器如何知道列寬?因為int 是指指向一個 int 型別的指標,32位系統中...
C語言指標與二維陣列求解,c語言中二維陣列的指標如何表示
假設a是乙個二維陣列,則一 a是第乙個一維陣列名,陣列名 就是該陣列的 首位址!二 a 0 和 a都表示這個一維陣列第乙個元素的內容 這句話有問題,應該是 都表示這個 二維陣列 第乙個元素的內容!三 a和a好像不等價啊?關於陣列名和 陣列名書上有明確的介紹與說明 a a a 0 a 0 這是規定!細...