gpt4 book ai didi

c++ - 什么类型,多维数组的名称是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:37 26 4
gpt4 key购买 nike

我试图掌握多维数组中指针的概念,有些事情我想澄清一下。让我们以一个小型二维数组 B 为例:

int B[4][3];
int i; //ranges from 0-3

我的问题是以下元素是什么类型:

B+i      
*(B+i)

让我感到困惑的是,当我运行时:

std::cout<<B;
std::cout<<*B;

输出是一样的。如果有人能澄清这一点,我会很高兴。

最佳答案

B 衰减为 int (*)[3]。这里的规则是删除最左边的范围,并添加 *

因此,B+i 也是 int (*)[3]

因此,*(B+i)int [3](衰减为 int *)。


B == *B 的事实并不难解释。 B 是第一个子数组的地址(也就是 B[0] 的地址),*B 是第一个子数组的地址子数组(也就是 B[0][0] 的地址)。


类型说明:

C/C++ 中的所有多维数组实际上都是嵌套的一维数组。

你的 int B[4][3]; 可以被认为是一个 T B[4],其中 Tint [3].

然后像普通一维数组一样发生衰减:T B[4] 变为 T (*)。因为 Tint [3],所以 T (*)int (*)[3]

关于c++ - 什么类型,多维数组的名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45380974/

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