gpt4 book ai didi

c++ - 二维指针数组

转载 作者:行者123 更新时间:2023-11-28 05:10:46 24 4
gpt4 key购买 nike

我想编写一个函数,返回指向二维指针数组的指针。我有这个数组:Organism* worldTab[20][20]; 我的 friend 建议我用这种方式编写我想要的函数:

    Organism** getWorldTab() {
return worldTab[20];
}

是否正确?当我想这样做时(tempOrganism*** temp;):

    *temp = world.getWorldTab();

Visual Studio 抛出异常

    Exception thrown: write access violation.

this->temp was 0xCCCCCCCC.

而且我很确定 getWorldTab() 函数是个问题。

worldTab 定义:Organism* worldTab[20][20];

最佳答案

数组不是指针,尽管在某些情况下它可以转换为指向其第一个元素的指针,并且指向数组的指针与指向指针的指针完全不同。

指向数组的指针的类型为 Organism* (*)[20][20]

指向数组第一个元素的指针可能是您 friend 的想法,但它的类型是 Organism* (*)[20],而不是 Organism**Organism***,并且不能转换为任何一个。

(而且,作为奖励,worldTab[20] 超出范围,因为它将是存在的 20 个数组中的第 21 个。而且您从未初始化过 temp 在分配给 *temp 之前,这是访问冲突的来源。)

虽然你可以写

Organism* (*getWorldTab())[20] {
return &worldTab[0];
}

Organism* (*temp)[20] = getWorldTab();

或者只是

Organism* (*temp)[20] = worldTab;

我认为你应该学习使用 std::vectorstd::array - 它们可以减轻很多痛苦。
(另外,现在是 2017 年。虽然它可能很有趣,但没必要像 1969 年那样编程。)

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

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