[英]What does the array subscripting operator ([ ]) do to an array?
我想知道數組下標運算符( []
)對對象做了什么
從這個問題和這個問題中,我了解到[]
運算符獲取 object 的地址,將括號之間的任何內容添加到 object 中,最后取消引用總和以獲得地址。 但是,在數組聲明中,例如。
int iarr[] = {1,2};
int iarr2[2] = {1,2};
[]
運算符似乎沒有將括號中的值添加到操作數中,尤其是在第二個示例中。 相反,它似乎賦予了 object 存儲 arrays 的能力。
另外,我的猜測是int arr2[2] = {1,2}
, arr[2]
將為兩個int
分配 memory 。 真的嗎?
作為總結:
[]
運算符在聲明期間對其操作數做了什么? 它只是讓 object 能夠存儲 arrays 還是為陣列分配了 memory?
[]
僅在應用於表達式時才是運算符。
(同樣的原則適用於&
和*
。)
在聲明中,它是類型的一部分,除了指定聲明的變量是一個數組之外,它並沒有真正“做”任何事情。
您混淆了[]
運算符和聲明數組的語法。
int iarr2[2] = {1,2};
正在聲明一個名為iarr2
的 2 個整數的數組,然后將數組的元素初始化為 1 和 2。它沒有應用[]
運算符。
這個:
int iarr[] = {1,2};
意味着定義一個數組,其大小將與初始化列表中的元素數量相匹配。
在另一方面:
int iarr2[2] = {1,2};
方法定義一個二元素數組並將其初始化為1
和2
你也可以這樣做:
int iarr2[4] = {1,2};
方法定義一個四元素數組並將前兩個元素初始化為1
和2
。 剩余元素初始化為: 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.