gpt4 book ai didi

c++ - 二维静态和动态数组传递

转载 作者:太空狗 更新时间:2023-10-29 23:07:05 28 4
gpt4 key购买 nike

假设我们有这些声明:

int** a;
int b[x][y];

我可以实现一个功能吗

foo f(bar c) {}

这让我

f(a);
f(b);

无需重载?

最佳答案

当然,只需使用 void* :)

然后回答你的问题,不。多维数组与指向指针的指针不同。原因是索引方案。 int b [2][2] 是一个连续的内存块,由 4 个整数组成。对其进行索引等同于以下内容:

b[i][j] == *(b + 2*i + j)

第二个维度是类型定义的一部分!由于数组的内存布局,编译器知道它只需要一次解引用。

同时,对于 int** a 索引是这样完成的:

a[i][j] == *(*(a+i)+j)

关于c++ - 二维静态和动态数组传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664835/

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