C++ 空终止对象数组

标签 c++ arrays null-terminated

我正在尝试创建一个像这样的空终止对象数组

void Game::createCreatures(int numCreatures) {
    creatures = new Creature *[numCreatures + 1];
    for (int i = 0; i <= numCreatures; i++) {
        if(i < numCreatures) {
            creatures[i] = new Runner(maze);
        } else creatures[i] = NULL;
    }
}

然后像这样访问它们

for (Creature *creature = creatures[0]; creature != NULL; creature++) {
    creature->travel();
}

我究竟做错了什么?当我尝试“旅行”该生物时,我收到了 EXC_BAD_ACCESS。我知道数组的创建有问题,因为如果我尝试使用我的访问 for 循环打印所有生物的地址,它会永远打印。我知道我的指针逻辑有问题,帮忙?

生物声明是这样的

Creature **creatures;

最佳答案

您的 creature 是指向 Creature 的指针。如果增加此指针,您将指向当前指向的生物后面的下一个 Creature,而不是表中的下一个指针。

使用:

for (int i=0; creatures[i]!=nullptr; i++) {
        creatures[i]->travel();
    }

关于C++ 空终止对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941085/

相关文章:

ios - 获取错误无法将类型 '(String,_) -> String' 的值转换为预期的参数类型 '(_, String) -> _'

c++ - 哪些 x86 C++ 编译器本身是多线程的?

c++ - 为什么 while 循环内的可变模板函数不打印到控制台?

c# - 大对象字典与数组索引字典

c - 打印字符串会产生垃圾,即使(我认为)它们是空终止的

c - 在 C 中支持带有空字符的字符串

c - 当我的字符串在 C 程序中包含空字符时?

c++ - 为什么在右值的情况下转发引用不推导出右值引用?

c++ - 如何定义查找函数?

javascript Angularjs 从数组中获取单个值