定義乙個二維陣列arr,為什麼arr, arr, arr三個量的值是一樣的?

時間 2021-06-15 08:51:08

1樓:某人

陣列名和指標很大程度上是一致的,它們最大的不同在於你不能給陣列名賦值,但指標可以。

如果arr定義為type arr[M][N];

那麼arr的指標型別為type (*arr) [N];它指向陣列首址。

&arr的指標型別為type (*arr) [M][N];同樣也指向陣列首址。

*arr是對arr的解引用,arr本身是二級指標,所以*arr還是表示指標,指向乙個一維陣列首址,這個位址同樣也是arr首址。

2樓:kdurant

指標,儲存的是變數的位址。

int*p=

(int*)

0x1000

;char*c

=(char*)

0x1000

;這兩個指標裡儲存的位址都是0x1000,指標的型別告訴我們取資料的時候是怎麼取的。

int 告訴我們要從0x1000位址處,連續取4個位元組的內容作為*p的值

char 告訴我們要從0x1000位址處,只取4個位元組的內容作為*c的值

回到你說的三個指標,他們儲存的位址值確實是一樣的,但解引用(*)的時候從記憶體裡取資料的多少是不一樣的

int arr[2][5]

arr指向的型別是 int (*)[5],這是乙個陣列指標,arr+1會增加乙個陣列的長度(4*5=20)

*arr指向的型別是 int *,模擬下int *p裡的p就可以了

&arr的型別是乙個指向二維陣列的指標,我不知道怎麼寫不出來(int [2][5] *, vs裡是這麼表示的,qt還不一樣),一般也用不到

3樓:Singularity

在C++中陣列名是指代該陣列物件的左值如執行 char str[10]; 後 str 的型別是 char[10] 並非固定的位址

它可以隱式轉換成 char* 型別的值(指向 str[0] )這個值在陣列物件存在期間是恆定的

再來說題主的問題

arr 等價於 &arr[0] 即該二維陣列的第一組的位址*arr 等價於 arr[0] 等價於 &arr[0][0] 即該二維陣列的第一組的第一項元素的位址

&arr 是整個二維陣列的位址三者的數值都等於二維陣列的第一組的第一項元素的最高位元組位址再結合以下呼叫 sizeof 運算子的例子就能明白了

2021 03 20 給定乙個二維陣列matrix,其中的值不是0就是1,返回全部由 如何解答呢?

mathe 我們可以先考慮計算每個1它左邊包含自身連續的1的數目 如果它本身為0,那麼計數也設定為0 比如對於矩陣 0110111 1100011 1110011 0111100 計數結果為 0120123 1200012 1230012 0123400 然後依次分析每一列 比如第一列有兩個連續的1...

如何理解一維指標陣列指向二維指標

szouc 兩個重要的基本概念偶爾會在教材中被忽視。1.陣列名出現在表示式中會隱式轉換成指向該陣列第乙個元素的常量指標。特殊情況暫忽略。2.解引用 運算子與下標 運算子等價,a 3 a 3 c 2 4 c 2 4 c 2 4 題目中 int c 4 是指標陣列,當陣列名 c 出現在表示式中,根據 1...

雜湊表 字典 二維陣列的區別是什麼?

漁歌 這個就是是乙個二維矩陣,或者說是乙個二維座標系,當橫縱座標x,y都確定的話,那座標系上的那個點的位置也就確定。例如 array i j 就是乙個二維陣列當中,第i行第j列儲存的乙個值。這個就是一種方式吧,對二維矩陣進行使用的一種 方式 比較難以區分的是雜湊表和字典,在這個回答中也看到了兩個完全...