1樓:匿名使用者
因為a是t[4]型別,所
以a[1]得到的是int型的值,對其取下標是非法的內。所以a[1][0]是一個非法的表示式。
咳咳以容下都是廢話。。怎麼跑題了。。。既然打出來就懶得刪了至於&a[1][0],編譯器解釋為&((a[1])[0]),同樣非法。
2樓:聽不清啊
定義了二維陣列a[3][4],那麼
a+1=*(a+1)=*a[1],表示a[1]的地址,即&a[[1]。
*(a[0]+1)表示a[0][1]
c語言,定義二維陣列a[3][5],則*(a+1)表示什麼 *(a+5)表示什麼 10
3樓:倒黴孩子改名啦
*(a+1)相當於a[0][1],
*(a+5)相當於a[0][5]已經越界了
定義一個二維陣列a[3][3],請問a與a[0]等價嗎,*(a+1)與a[1]等價嗎,a+1與a[ 10
4樓:痛不過錯愛
a是二維陣列的首地址,而a[0]同樣是二維陣列中第一行的首地址,是等價的。*(a+1)是第二行首個元素,a[1]是其地址,不等價。a[1]與a+1等價
5樓:月
單獨一個a就是指a[0]=a,*(a+1)=a[1],a+1=a[0]+1
c語言二維陣列與指標,我想知道為什麼*(a+1).與顯示中的a+1,所給出的地址是一樣的,怎麼理解?
6樓:
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;
7樓:匿名使用者
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是指標,運算結果與前者相同。
8樓:匿名使用者
二維陣列是兩層指標,這個你該明白
*(*(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個元素的地址
9樓:未來需努力點綴
樓主你好
你這裡的a是陣列名
陣列名a是陣列a[2][3]的首地址 也就是a[0][0]的地址那麼a+1就是a[0][1]的地址 *(a+1)對應的就是a[0][1]
希望能幫助你哈
10樓:楊復興
×(a+1)是一個指向 指向(a+1)所以它和a+1的地址是一樣的
二維陣列a中,為什麼*(a+1)是地址?
11樓:匿名使用者
a相當於是a[0][0]的地址
不是的,a+1是地址,*(a+1)是取a+1這個地址的值a+1是a[0][1]的地址
*(a+1)相當於是a[0][1]
所以輸出2
12樓:匿名使用者
對,是地址,*(a+i)是第i行的首地址
其實你那個是簡化了,嚴格的來說應該這麼寫
printf("%d\n",*(*(a+1)+0));
已知定義了二維陣列a3則表示式a1正確嗎為什麼
yes,it is right.the result of the expression a 0 1 is a pointer,定義了二維陣列a 3 4 那麼a 1,a 1 a 1 a 0 1 各代表什麼意思 因為a是t 4 型別,所 以a 1 得到的是int型的值,對其取下標是非法的內。所以a 1...
用c語言如何定義較大的二維陣列例如1000行
void main 這樣定義沒有問題 array size too large 陣列太大 分析 定義的陣列太大,超過了可用記憶體空間。可能是你的可用記憶體空間太小 用int定義所佔空間較大,如用unsigned char定義空間會節約很多,不過還是不能滿足1000行1000列的要求,微控制器內的資料...
C語言中關於二維陣列的問題,c語言關於定義二維陣列的問題
float a 5 是定義了一個指向陣列的指標,如果要把它當成二維陣列的話,相當於列數為5,行數可以動態分配。如 float a 5 int n 2 定義行數為2 a new float n 5 int sum 0 for int i 0 i 對於你定義的這個陣列,它表示有5個float 型別的指標...