定義了二維陣列a,那麼a1a1a1各代表什麼意思

2021-03-03 21:53:13 字數 2717 閱讀 2467

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 型別的指標...