c++ - 试图理解函数中指针的使用

标签 c++ pointers vector

我只是想了解这个功能。我说返回类型是指向对象 Fruit 的指针并且应该是内存中的地址是对的吗?另外,我在 fruitInCharacter 中返回了 Fruit 的取消引用对象,这也是一个内存地址?

Fruit* Player::fruit(int location)
{
    if (location<(int)fruitInCharacter.size()) {
        return &fruitInCharacter.at(location);
    }
    return NULL;
}

同样在第二个函数中,我使用 .push back 将指针(内存中的地址)传递给 vector ?

void Player::attachFruit(Fruit *inFruit)
{
  fruitInCharacter.push_back(*inFruit);

}

最佳答案

是的。返回类型是指向 Fruit 对象的指针,并且“应该”是内存中的一个地址。

不。您不会返回“fruitInCharacterFruit 的取消引用对象,它也是一个内存地址”。您正在返回 fruitInCharacter 内的 Fruit 对象的地址。您正在使用 & 运算符,因此您正在获取该对象的地址

不。在第二个函数中,您没有“将指针(内存中的地址)传递到 vector 中”。您正在传递一个对象。由于 inFruitFruit * 类型(因此,它是一个地址),因此取消引用的表达式 *inFruitFruit< 类型(因此,它是一个对象)。

关于c++ - 试图理解函数中指针的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958387/

相关文章:

c++ - 指向数组的指针在 STL 与常规 for 循环中不同

c++ - 为什么这个返回类型有效?

c++ std::vector 迭代器构造函数 first == last

c - 指针初始化无法识别定义的类型

c++ - 使用 vector 创建形状

c++ - 如何确定进程外COM服务器支持的线程模型?

c++ - 在 C++ 中什么时候应该使用函数而不是仿函数?

c++ - 为什么我在这段代码上得到 "no match for call"?

c++ - 在 x64 中我们可以通过 malloc() 获得多少内存?

c - 释放未初始化的指针会导致未定义的行为吗?