1樓:自我程式設計
二維陣列可以理解為幾個指向一維陣列的指標組成指標陣列。
所以從型別上講,a是指向指標的指標,*a是指向一行一維陣列的指標。
但a作為陣列名,又表示了陣列首地址(在記憶體中元素地址是連續的)。
*a是第一行陣列首地址。所以值相同
(注意只是值相同,比如a[n]和(*a)[n]意義就不一樣,一個表示第n行的行指標,一個是第一行的第n列)。
2樓:天神在此
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]
請問二維陣列a[2][2] 為什麼a和*a輸出結果一樣?
3樓:馮凱在**
是一樣的,a表示二維陣列的首地址,*a是把二維陣列看成一維陣列後的首地址,但其實和a指向的地址一樣
為什麼c語言中二維陣列的陣列名a和*a表示的是同一個值?
4樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首地址。
於是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
c語言 為什麼*a和a指向同一個地址?*a不是取地址裡面的內容嗎,就是取值。看不懂
5樓:
c語言裡二維陣列是一維陣列所組成的陣列
short a[3][4]; 有3個元素,每個元素都是由回4個short組成的答
陣列,注意,每個元素都是陣列
*a就是a[0], 有上面說的可知,a[0]是個陣列,那自然就是個地址了
可以再加一句:
printf("%d\n",**a); // 這個就是a[0][0]了
6樓:匿名使用者
這涉及到多級指標,a是地址,*a取到的是行的首地址,也就是a[0],如果要取值要用二級指標,**a=a[0][0]
c語言二維陣列與指標,我想知道為什麼*(a+1).與顯示中的a+1,所給出的地址是一樣的,怎麼理解?
7樓:
a=&a[0];陣列名相當於指標,等於陣列首地址, 型別為 int(*)[3];
*a= a[0];陣列int a[2][3];二維陣列 a有兩個子陣列,a[0],a[1] ;
有2*3 =6個int型元素 a[0][0],a[0][1],a[0][2];a[1][0],a[1][1],a[0][2];
就是說定義一個陣列int a[2][3];同時定義了 1+2+6
共九個識別符號,6個整型變數,兩個三個整型元素的一維陣列a[0],a[1] 定義為
;一個二維陣列 a;一共定義了9個名字。
*(a+1)=*(&a[1])=a[1];
a+1=&a[0]+1 =&a[1];
由於並無單獨的儲存空間儲存 a[1] 這個指標(a[1][0]的地址),所以a[1]和&a[1] 除了型別不同外,實際內容是相同的,
&a[1]的型別為 int(*)[3];
a[1]的型別為 int [3]; 也就是int* ;
實際上a,a[0],&a[0][0] 甚至&a的值都是相同的,但是型別不同
a,&a[0];: int [2][3] ==>int (*)[3]; (const ??? int (const ????*)[3])
a[0]; :int [3]==>int *; (const??? )int *;
a[0][0]; : int;
8樓:匿名使用者
a是雙下標變數,相當於定義是int **a; a存放著這個二維陣列的首地址,由於是二維陣列,
a+1實際上是地址a+3*sizeof(int),(其中的3對應著定義int a[2][3];)也就是a[1][0]的首地址
所以*(a+1)還是一個指標,與&a[1][0]是一樣的,a+1是指標,運算結果與前者相同。
9樓:匿名使用者
二維陣列是兩層指標,這個你該明白
*(*(a+i)+j)這個是表示i行的第j個資料,注意啊,是兩個*要是不理解,記住套用即可
一個*是指標
所以ij都是指標
a+1是一個指標,表示第1行的首地址(c中陣列時從0開始計數的)在二維陣列中,
a,a[0],&a[0][0]這三個指標雖然都是a的首地址的值,但是在c中用起來是不一樣的
a表示二維陣列的首地址
a[0]表示第0行的首地址
&a[0][0]表示第0行的第0個元素的地址
10樓:未來需努力點綴
樓主你好
你這裡的a是陣列名
陣列名a是陣列a[2][3]的首地址 也就是a[0][0]的地址那麼a+1就是a[0][1]的地址 *(a+1)對應的就是a[0][1]
希望能幫助你哈
11樓:楊復興
×(a+1)是一個指向 指向(a+1)所以它和a+1的地址是一樣的
c語言二維陣列迴圈賦值,C語言二維陣列迴圈賦值
這個只是陣列值的大小和行列的關係而已 就代表改數的值等於所在行數的4倍加所在列數加1 c語言中怎樣實現對二維陣列元素進行賦值並輸出。可以按照下面步驟進行定義二維陣列並輸出 1 定義二維指標。2 確定內陣列維數,即行數容和列數。3 申請行數個一維指標大小空間,並賦值給二維指標。4 對於每個一維指,申請...
c語言二維陣列的賦值,c語言有關二維陣列變數初始化
1 首先在電腦上開啟抄c語言程式設計軟襲件。然後建立專案。2 然後匯入stdio.h和stdlib包。再加入malloc包。3 然後定義五個引數。再建立其中兩個引數的空間。4 然後用for語句進行迴圈。再用scanf語句進行接收輸入到二維陣列。5 然後用兩個for語言迴圈。再輸出二維陣列的數值。6 ...
c語言輸入整型二維陣列a,計算該二維陣列中的最
include void main int a 3 4 max,maxi 0,maxj 0,i,j printf 請輸入 n for i 0 i 3 i for j 0 j 4 j scanf d a i j max a 0 0 for i 0 i 3 i for j 0 j 4 j if max中...