【问题标题】:What's the type of 2d array's element in c and c++?c 和 c++ 中二维数组元素的类型是什么?
【发布时间】:2017-12-31 05:17:04
【问题描述】:

例如

int arr[2][3] = ...

arr[0]的类型是

int (*)[3] // pointer to int[3], which is a pointer. 

或者

int[3] // an array whose size is 3, which is an array. 

谷歌没有告诉我这个问题。

我知道指针和数组是不同的类型(派生类型)。

也许C和C++对待它的方式不同,我希望看到标准的措辞。

【问题讨论】:

  • @coderredoc 谢谢。我怀疑这是关于数组和指针之间的转换,但不确定。现在解决了。
  • 学习愉快,万事如意。

标签: c++ c arrays multidimensional-array language-lawyer


【解决方案1】:

arr[0]int [3] 类型,它不是一个指针。

int (*p)[3]int(*)[3] 类型的指针,表示指向 3 个元素的数组。

指针不是数组,数组也不是指针。

现在,当您将此二维数组传递给函数(或任何发生衰减的情况)时,它衰减为指向第一个元素int (*)[3] 的指针。

C 中更清楚地说,二维数组只不过是数组的数组。

剖析

  • arr 是一个数组,每个元素又是一个包含3 元素的数组。

  • arr[0] 在大多数情况下(sizeof 等除外)将衰减为指向它包含的第一个元素的指针,即int*

  • arr[0][0] 是一个int

  • 终于&arr[0] ..猜猜怎么着?这是int(*)[3] 类型。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2014-08-07
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多