gpt4 book ai didi

c++ - 指向数组

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:23 25 4
gpt4 key购买 nike

有这样的代码:

int tab[14][2];
int (*wskk)[2] = tab; // &tab makes error

int tab2[2];
wskk = &tab2; // tab2 makes error

为什么可以用一个指针指向两个不同维度的数组?

最佳答案

要了解正在发生的事情,您必须熟悉一些关键概念:

  • 多维数组是数组的数组;
  • 数组的名称衰减为指向其第一个元素的指针;
  • wskk 的类型是“指向 2 个 int 数组的指针”。

因此,如果您编写 tab,您将获得指向 tab 的第一个元素的指针,即它的第一行;该行的类型为 int[2],因此指向它的指针的类型为 int (*)[2],这正是您的指针的类型。因此,您可以将 tab 分配给 wskk,它现在将指向 tab 的第一行。

不能给它赋值&tab,因为这会产生一个指向整个多维数组的指针,它的类型是int (*)[ 14][2]

至于第二 block ,就更简单了:tab2是两个int的数组,所以它的类型是int[2]。如果您通过 & 运算符获得指向它的指针,您将获得一个 int (*)[2],这是您的指针的类型。实际上,这是有道理的:tab2 和一行 tab 实际上是相同的东西(2 个 int 的数组)。

不能tab2 分配给它,因为 tab2 会衰减到指向其第一个元素的指针,即 int *

关于c++ - 指向数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7613584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com