我剛剛開始學習C ,我有一個問題。如果arr是一個陣列或10個ints,那么arr就是指向陣列中第一個元素的指標。但是&arr是什么意思?那么,陣列的指標和陣列的參考之間的區別是什么呢?
uj5u.com熱心網友回復:
那么arr就是一個指向陣列中第一個元素的指標
不!
陣列和指標是C 中兩種不同的型別,它們之間有足夠的相似之處,如果不正確理解,就會造成混亂。事實上,指標是初學者最難掌握的概念之一,這也無濟于事。
所以我認為需要一個快速的速成課程。
速成課程
陣列,簡單int a[3] = { 2, 3, 4}。這創建了一個名為
a的陣列,其中包含3個元素。陣列已經定義了array subscript運算子:
a[i] 。評價到陣列的
i'th元素。指標,簡單
int val = 24; int* p = &val;。
p是一個指向物件val地址的指標指標有indirection (dereference)運算子定義:
*p評估為
p指向的物件的值。指標,像陣列一樣行事
指標給你記憶體中一個物件的地址。它可以是一個 "獨立的物件",就像上面的例子,也可以是一個屬于陣列的物件。指標型別和指標值都不能告訴你它是哪一個。只有程式員。這就是為什么指標也有定義的陣列下標運算子:
p[i] 。評估到
。i指向的物件的 "右邊 "的p的第幾個元素。這假定p指向的物件是一個陣列的一部分(除了在p[0]中,它不需要是陣列的一部分)。注意,
p[0]等同于(與)*p。陣列,像指標一樣行事
在大多數情況下,陣列名稱會衰減為指向陣列中第一個元素的指標。這就是為什么許多初學者認為陣列和指標是同一回事。事實上它們不是。它們是不同的型別。回到你的問題上來
什么是&arr
?
如上所述,arr不是一個指標。所以&arr意味著指向陣列的指標。這與指向陣列第一個元素的指標不同(&arr[0])。
那么,陣列的指標和陣列的參考之間有什么區別呢?
好吧,首先請閱讀C 中的指標變數和參考變數之間有什么區別?。其次......嗯,差不多就是這樣了。
這個答案的大部分內容是從我的另一個答案
復制的。uj5u.com熱心網友回復:
你需要考慮3個不同的概念:
你需要考慮3個不同的概念。
你需要考慮3個不同的概念。
下面是關于如何將這三個變數連接在一起的總結:
arr == &arr[0]
并且
*arr == arr[0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/314140.html
標籤:
