簡體   English   中英

C ++多維數組

[英]C++ multi-dimensional array

我們有以下代碼:

int arr[3][4];

所以arr是:

  1. 3個元素組成的數組,每個元素都是4個int組成的數組。

  2. 一個4個元素的數組,每個元素都是3個int的數組。

哪一個是正確的,為什么? 它如何與高維數組一起工作? 我想這與操作符的優先級和關聯性有關。

您的第一個解釋是正確的。

最好使用Right Left規則解析此類聲明,您可以在此處此處閱讀

C ++草稿標准中的$ 8.3.4:...

示例:考慮int x [3] [5]; 這里x是3×5的整數數組。

...

注意:由此可見,C ++中的數組是按存儲 (最后一個下標變化最快),聲明中的第一個下標有助於確定數組消耗的存儲量,但在下標計算中不起作用。 —尾注]

注意C ++沒有運算符[] []。 它只有運算符[]

我發現最容易想到多維數組中的“行”和“列”,而不是試圖使我的注意力集中在“數組數組”上。 這具有方便的屬性, 可以確定哪個索引是行,哪個索引是列。 換句話說,我可以想到int arr[3][4]; 作為具有3行4列或4行3列的2D數組。 只要我的代碼與我對數組的看法一致,那么一切都會順利進行。 但是,如果我在程序中途切換視圖,事情就會開始崩潰。

話雖如此,通常我更喜歡將此示例視為3行4列,因為這類似於線性代數中首先列出行的數學符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM