已經定義一維陣列a 4a表示二維陣列嗎 a 1表示a

時間 2021-09-11 22:33:34

1樓:匿名使用者

1 &a不會表示2維陣列,他是對a陣列的首地址取地址值,這個時候&a就是陣列a的首地址

2 &a+1 表示的是一個地址,哪個地址呢,從陣列a的首地址便宜 sizeof(a)大小個位元組的地址,在這裡偏移的是 sizeof(a) = 16;

3 一維陣列和二維陣列在記憶體中都是連續的記憶體,沒有什麼不同,所以維度只是人為的區分。

2樓:

&a的型別是int (*)[4]

並不能說&a表示一個嚴格意義上的二維陣列

或者你可以把他想成一個「每一行」只有一個元素的二位陣列&a+1是a[1][0]的地址值

3樓:匿名使用者

對於int a[n],n是常量,a是一個指標,其型別是*int,其內容是a[0]的存放地址,&a是指標a的存放地址,顯然&a[0] ≠ &a。

而對於int b[n][m], n,m為常量,b的型別為**int,b[0]存放的是b[0][0]的地址,a[n]和b[n][m]的區別是明顯的,但由於二維陣列元素的存放順序在各維間是連續的,所以可以用一維陣列的訪問方法存取二維陣列元素,比如,b[1][2]可以寫作(*b[1] + 2),還可以寫作b[1 * n + 2],但如何用訪問二維陣列的方法存取一維陣列的內容尚需仔細斟酌。

4樓:恨水水水長東

&a表示一個二維陣列的首地址,&a+1表示a[1][0]的地址

5樓:匿名使用者

前面的回答有一個非常搞笑的扯淡 陣列不等於指標 **int同樣很搞笑

還有不太明白為什麼所有人都把a當做int處理。。。現假設a是t的陣列,即t[4]。

回到正題 &a 的型別是 t(*)[4], 既不是二維陣列的t[x][y],也不是二級指標的t**,故&a不表示一個二維陣列。

&a+1實際上跑到了a的後面。。類似這樣(不太標準)

-----a------   |

實際上跑到了這裡

因為a是t[4]型別,所以a[1]得到的是int型的值,對其取下標是非法的。所以a[1][0]是一個非法的表示式。

咳咳以下都是廢話。。怎麼跑題了。。。既然打出來就懶得刪了

至於&a[1][0],編譯器解釋為&((a[1])[0]),同樣非法。

(&a)[1][0] 就是*(*(&a+1)+0).

lz可以執行一下這個程式:

#include

int main(void)

;printf("%p\n", &a[0] + 1);

printf("%p\n", &a + 1);

return 0;}

定義了二維陣列a[3][4],那麼a+1,*(a+1),*a[1],*(a[0]+1)各代表什麼意思

6樓:匿名使用者

因為a是t[4]型別,所

以a[1]得到的是int型的值,對其取下標是非法的內。所以a[1][0]是一個非法的表示式。

咳咳以容下都是廢話。。怎麼跑題了。。。既然打出來就懶得刪了至於&a[1][0],編譯器解釋為&((a[1])[0]),同樣非法。

7樓:聽不清啊

定義了二維陣列a[3][4],那麼

a+1=*(a+1)=*a[1],表示a[1]的地址,即&a[[1]。

*(a[0]+1)表示a[0][1]

定義int a[2][4],表示陣列a中的元素個數是幾個

8樓:匿名使用者

定義int a[2][4],陣列a中的元bai素個數是8個。

行號du

從zhi0~1,

列號從0~3,

共2*4=8個。

陣列類dao型說明 在c語言內中使用陣列必須先容進行型別說明。

擴充套件資料:

舉例說明整型陣列a,有10個元素。若要表示第10個元素,則使用a[9]。第一個則是a[0]。

int a[10];

說明實型陣列b,有10個元素,實型陣列c,有20個元素。

float b[10],c[20];

說明字元陣列ch,有20個元素。

char ch[20];

特點1、陣列是相同資料型別的元素的集合。

2、陣列中的各元素的儲存是有先後順序的,它們在記憶體中按照這個先後順序連續存放在一起。

3、陣列元素用整個陣列的名字和它自己在陣列中的順序位置來表示。例如,a[0]表示名字為a的陣列中的第一個元素,a[1]代表陣列a的第二個元素,以此類推。

對於vb的陣列,表示陣列元素時應注意:

1、下標要緊跟在陣列名後,而且用圓括號括起來(不能用其他括號)。

2、下標可以是常量,變數,或表示式,但其值必須是整數(如果是小數將四捨五入為整數)。

3、下標必須為一段連續的整數,其最小值成為下界,其最大值成為上界。不加說明時下界值預設為1。

9樓:聽不清啊

定義int a[2][4],陣列a中的元素個數是8個行號從0~1

列號從0~3

共2*4=8個

10樓:匿名使用者

陣列的下標黙認從0開始,所以二維陣列a的元素個數為3x5=15

11樓:兄弟連教育北京總校

8個,這是個二維陣列。

定義一個4行4列的二維陣列int a[4][4]和一個一維陣列int b[4],(1)呼叫隨機函式

12樓:匿名使用者

先宣告一個二bai維陣列du

,通過雙層for迴圈zhi

進行dao輸入並輸出。

版#include

int main()

printf("\n");

}for (j = 0; j < 4;j++)printf("%5d", b[j]);

}getchar();

}結果如下所示權:

c語言中,一個二維陣列 a[5][9] 中a[4]指的是什麼?

13樓:l語言之父

二維陣列 a[5][9] 中a[4]指的是a[4][0]的地址,a[5][9]相當於有5個一位陣列每個陣列長度為9a[4]相當於第四個陣列的首地址,a[4] + 1等於a[4][1]滿意請採納,不懂請追問

14樓:聽不清啊

c語言中,一個二維陣列 a[5][9] 中a[4]指的是

a[4][0]~a[4][8]的一個一維陣列的首地址,也即是a[4][0]的地址。

15樓:匿名使用者

一群人回答, 就菜菇孃的小魔姑答對了,其他的都胡扯啊!

a[4][0]的地址跟a[4]一樣嗎?數值上是一樣了,型別呢?

int a[5][9]的話,

&a[4][0]是int *,而a[4]卻是 int [9]!能一樣嗎?

不信的話,用sizeof()看看佔用位元組數試試

16樓:醉愛女人幽香

a[4]指第五組一維陣列,意指一個指標,在數值上等於a[4][0]的地址,如圖:

17樓:康橋不再憂傷

a[4] 中存的是一個以a[4]為首地址的一個陣列

18樓:匿名使用者

a4 代表 條件取數直

c語言指標:一個二維陣列a[3][4],為什麼*a會表示&a[0][0]呢?不是【a表示&a[0]

19樓:匿名使用者

*a表示第0行第0列地址,a既是陣列名,也是第0行的首地址;a[0]表示第0行0列的地址,*是取物件,&是取地址,*a[0]才表示值

20樓:貝蠡

*a預設為第0行第0列地址

c語言二維陣列表示形式!"&a[0][0]+4*i+j;(在i行前尚有4*i個元素存在)"

21樓:匿名使用者

&a[0][0]就是a,表示的是陣列的首地址你寫的兩個方式都是錯誤的

你的意思應該是表示一個4列的二維陣列a的a[i][j]可以使用*(*(a+i)+j)望採納

22樓:林小兀

這個很好理解啊,第一個式子是取二維陣列的首地址,然後第二個便是在首地址後再偏移i*4,這樣陣列便是?*4的陣列,你自己畫個圖,每個元素按順序算下來,你就懂了

php 二維陣列賦值定義,php怎樣定義二維陣列?

arr array array id 1,xuefei 50萬以下 array id 2,xuefei 51萬 60萬 xuefei array array id 1,xuefei 50萬以下 array id 2,xuefei 50萬 60萬 array id 3,xuefei 60萬 70萬 a...

php中如何合併幾個二維陣列成為二維陣列

宇宙大師之一 php 中的 array merge recursive 函式可以實現 將一個或多個陣列的元素的合併起來,一個陣列中的值附加在前一個陣列的後面。並返回作為結果的陣列。當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞迴組成一個陣列。array merge recursive ar...

二維陣列地址計算等問題,二維陣列地址問題,求詳解

二給陣列在內在中是連續儲存的,若有int a 20 20 則儲存如下示意 第1行 a 0 0 a 0 1 a 0 2 a 0 3 a 0 4 a 0 5 a 0 6 a 0 7 a 0 8 a 0 9 a 0 10 a 0 11 a 0 12 a 0 13 a 0 14 a 0 15 a 0 16 ...